MATLAB: Solve non-linear equation.

MATLABnon-linear equation

Hi to all,
Im solving the next equation (I use 2 different methods of writing the equation)
%Variable
syms theta
%Definicion de funciones/equaciones.
Equation = tan(theta)- theta -0.023;
Equation_fun = @(theta) tan(theta)- theta - 0.023
To solve it I use the following methods:
%Resolucion numerica
S = fsolve(Equation_fun,0.5);
S = fzero(Equation_fun,0.5);
These methods strongly depend on the initial condition. I want to find a method that finds all the roots between 0 and 2 pi. Because of the equation I am solving. This equation represents the evolve equation. The correct answer is 0.401. It only appears when the inital condition is near the root.
Thanks for the help!

Best Answer

You can tell fzero to bound the search to a desired sub-interval.
>> fzero(Equation_fun,[0,pi/2])
ans =
0.4012
>> fzero(Equation_fun,[3,3*pi/2])
ans =
4.4945
It can be seen from a plot of the function that these are the only 2 roots.
fplot(Equation_fun,[0,2*pi])
untitled.png