Clear Filters
Clear Filters

Solve non-linear equation.

1 view (last 30 days)
Xavi Alm
Xavi Alm on 30 Nov 2019
Edited: Matt J on 1 Dec 2019
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!
  1 Comment
Matt J
Matt J on 1 Dec 2019
How can 0.401 be the correct answer if the task is to find all roots between 0 and 2*pi?

Sign in to comment.

Accepted Answer

Matt J
Matt J on 1 Dec 2019
Edited: Matt J on 1 Dec 2019
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

More Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!