Can someone help me how to calculate theta?
Show older comments
a and b are variables calculated by measured values.
I dont know how should I define theta:
Error
Unrecognized function or variable 'theta'.
S = solve ((((a+b)*theta)/(theta^2 - (a*b))*tan_theta), theta)
5 Comments
Matt J
on 28 Oct 2021
Is tan_theta also known, or did you mean to write tan(theta) ?
Image Analyst
on 29 Oct 2021
Somethimes it helps to plot things numerically.
% Demo by Image Analyst.
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clearvars;
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 16;
fprintf('Beginning to run %s.m ...\n', mfilename);
theta = linspace(-1.2, 1.2, 400);
a = linspace(-pi, pi, 400);
mina = min(a)
maxx = max(a)
allb = linspace(-pi, pi, 9)
for k = 1 : length(allb)
b = allb(k);
subplot(3, 3, k);
plot(theta, tan(theta), 'b-', 'LineWidth', 2);
grid on;
hold on;
y = (a + b) .* theta ./ (theta.^2 - a * b);
plot(theta, y, 'r-', 'LineWidth', 2)
caption = sprintf('b = %.2f, a = [%.2f, %.2f]', b, mina, maxx);
title(caption);
xlabel('theta')
end

Walter Roberson
on 29 Oct 2021
y = (a + b) .* theta ./ (theta.^2 - a * b);
if theta is 0 and a and b are finite then the numerator is 0. If neither a nor b are 0 then the denominator would be nonzero for this case. Therefore y would have to be 0. tan(0) is 0. So except when a or b are 0, theta = 0 is a solution. However none of your plots show it as a solution.
Elham Rahimi
on 1 Nov 2021
Edited: Elham Rahimi
on 1 Nov 2021
Walter Roberson
on 1 Nov 2021
What happens if, hypothetically, theta were 0?
tan(theta) = (a+b) * theta /(theta^2 - a*b)
tan(0) is 0
0 = (a+b) * 0 / (0^2 - a*b)
0 = 0 * (a+b) /(-a*b)
if a*b is not 0 then the denominator is not 0. 0 / nonzero is 0. So left side is 0 and right side is 0.
Therefore theta = 0 is a solution whenever neither a nor b is 0.
Answers (2)
Uba K Ubamanyu
on 28 Oct 2021
0 votes
try fsolve with an initial guess.
I am assuming you meant to write tan(theta) instead of tan_theta
intial_guess =1;
S = fsolve(@(theta) (((a+b)*theta)/(theta^2 - (a*b))*tan(theta)), initial_guess)
1 Comment
Elham Rahimi
on 28 Oct 2021
Walter Roberson
on 29 Oct 2021
0 votes
The solution is theta = 0 unless a or b are 0.
6 Comments
Walter Roberson
on 1 Nov 2021
Edited: Walter Roberson
on 1 Nov 2021
a = randn()
b = randn()
syms theta
eqn = tan(theta) == (a+b)*theta/(theta^2 - a*b)
E2 = lhs(eqn) - rhs(eqn)
fplot([E2,0], [-20 20])
fplot([E2, 0], [-1 1])
theta = 0 is not the only solution, but it is a solution.
Walter Roberson
on 1 Nov 2021
Edited: Walter Roberson
on 1 Nov 2021
This all depends upon the equation shown in https://www.mathworks.com/matlabcentral/answers/1574133-can-someone-help-me-how-to-calculate-theta#comment_1805933 being the correct equation. The question you posted originally was different:
a = rand()
b = rand()
syms theta
E2 = (((a+b)*theta)/(theta^2 - (a*b))*tan(theta))
fplot([E2, 0], [-10 10])
fplot([E2, 0], [-1 1])
we can see by inspection that this has a 0 when theta is 0, or when tan(theta) is 0, or when theta is infinite.
Elham Rahimi
on 3 Nov 2021
Walter Roberson
on 3 Nov 2021
I showed how to plot:
E2 = lhs(eqn) - rhs(eqn)
fplot([E2,0], [-20 20])
E2 is the difference between the left hand side and the right hand side. The places where E2 is 0 are the places where the two sides balance out
Elham Rahimi
on 3 Nov 2021
eqn = str2sym('tan(theta) == (894987427786373*theta)/(4503599627370496*(theta^2 - 710587193844941/72057594037927936))')
E2 = lhs(eqn) - rhs(eqn)
fplot([E2, 0], [-1 1])
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!








