Solve non-linear equation.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Xavi Alm
el 30 de Nov. de 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 comentario
Matt J
el 1 de Dic. de 2019
How can 0.401 be the correct answer if the task is to find all roots between 0 and 2*pi?
Respuesta aceptada
Matt J
el 1 de Dic. de 2019
Editada: Matt J
el 1 de Dic. de 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](https://www.mathworks.com/matlabcentral/answers/uploaded_files/251667/untitled.png)
0 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!