Borrar filtros
Borrar filtros

Solve non-linear equation.

1 visualización (últimos 30 días)
Xavi Alm
Xavi Alm el 30 de Nov. de 2019
Editada: Matt J el 1 de Dic. 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
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?

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
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

Más respuestas (0)

Categorías

Más información sobre Mathematics en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by