How to find the roots of a trigonometric equation?
16 views (last 30 days)
Show older comments
Hi, I want to determine the roots of a trigonometric equation :

I try with 3 methods:
by Method 1, I got logarithmic answer. In Method 2, I got only one answer while I need more (I expended the length of the domain but nothing happend). and by Method 3 which Star Strider helped me alot, when I check the calculation and substitute the roots in equation I got nonzero answer (in that problem I did not have this error). I really appreciate any help.
L=1e-3;
f=-35;
e=sqrt(2/L-f^2);
pp=20;
l1=fplot(@(gammaL)e*sin(gammaL),[-pp,pp],'c');
hold on
l2=fplot(@(gammaL)-f*cos(gammaL));
figure
l3=fplot(@(gammaL)(e*sin(gammaL)+f*cos(gammaL)),[-pp,pp]);
zxi = find(diff(sign(l3.YData)));
for k = 1:numel(zxi)
idxrng = (-1:1)+zxi(k); % Index Range For Interpolation
if idxrng~=0
gammaL(k,:) = interp1(l3.YData(idxrng), l3.XData(idxrng), 0);
end
end
Thanks in advance
Accepted Answer
John D'Errico
on 10 Jan 2022
Edited: John D'Errico
on 10 Jan 2022
Solving for the roots of the trigonometric equation you show in youer question is actually trivial. Sorry, but it is. In fact, it can be done with pencil and paper, if you use a simple identity from trig.
You claim to have the problem:
e*sin(gammaL) + thetaC*cos(gammaL) == 0
where e and thetaC are known. Jut rewrite it as
-thetaC/e = sin(gammaL)/cos(gammaL)
Now if you recognize the right hand side as the tangent, we have
tan(gammaL) = -thetac/e
and therefore, the principle solution is just
gammaL = atan(-thetac/e)
if you want to solve for ALL solutions, remember that the tangent function is periodic, with period pi. so the fully general solution should be just
gammaL = atan(-thetac/e) + k*pi
where k is any integer. This should be valid as long as thetaC is not zero, and as long as cos(gammaL) is not zero. And as long as I am awake when I write this. :)
See what syms says now..
syms e thetaC gammaL
sol = solve(e*sin(gammaL) + thetaC*cos(gammaL) == 0,gammaL,'returnconditions',true)
sol.gammaL
sol.conditions
So, is this a valid solution? Is it mathematically equivalent to my solution? Actually, yes. It must be so. That the symbolic toolbox did not see the simplification I found is not that important. You asked for a solution, did you not?
The symbolic toolbox saw that we can transform the problem using the identity
sin(u+v) = sin(u)cos(v) + cos(u)sin(v)
then it used deMoivre's identiy
exp(i*theta) = cos(theta) + i*sin(theta)
to solve for gammaL.
Both solutions should be equally valid, just expressed differently. For example:
e = 1; thetaC = 2;
vpa(subs(sol.gammaL),5)
syms K
vpa(atan(-thetaC/e)) + K*pi
Both solutions will come out of there, depending on if K is even or odd. With some mental effort, I could surely prove they were mathematically equivalent, but is there a good reason to do so?
More Answers (1)
VIGNESH B S
on 10 Jan 2022
syms e x t_c
eqn = e.*cos(x) + t_c.*cos(x) == 0;
solve(eqn,x)
here gamma*L = x
t_c - theta c
solve(equation , varaiable) and variable here is x = gamma*L.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!