Borrar filtros
Borrar filtros

Determine f(x)=0 with newtons method

8 visualizaciones (últimos 30 días)
Joakim Karlsson
Joakim Karlsson el 4 de Nov. de 2017
Comentada: Matt J el 4 de Nov. de 2017
Hi everybody. I am going to be honest that this is something for school but I need some help and guidance with it. I am almost 100% done with the code but it somehows doesnt seem to work.
So the task is to determine f(x)=0 using newtons method and my function code looks like this
function x = min_newton(f,Df,x0,tol)
%Determine f(x)=0
%Code below
kmax=100;
x=x0
for k=1:kmax
h=-f(x)/Df(x);
x=x+h;
if abs(h)<tol, break, end
end
end
It seems alright to me. Then my code below is to determine the f(x)=0 to a given function.
f=@(x)0.5.*(x-2).^2-2.*cos(2*x)-1.5;
Df=@(x)x-2.*cos(2*x)-3.5;
plot(x,f(x)) %intersects approx at x=-0.5 x=1, x=2, x=4
x0=-0.5;
zero=min_newton(f,Df,x0,0.5e-8);
disp(zero)
The problem for me here is whatever I set my x0 to it only calculates it for the first zero which is approx at -0.5 and if I set my x0=1 it still calculates for -0.5. What is wrong here exactly?
I have tried different kmax etc.

Respuesta aceptada

Matt J
Matt J el 4 de Nov. de 2017
Editada: Matt J el 4 de Nov. de 2017
Your Df(x) looks very wrong.
  2 comentarios
Joakim Karlsson
Joakim Karlsson el 4 de Nov. de 2017
Yes of course, my bad.
Df=@(x)x+4.*sin(2*x)-2;
This seems more correct?
Matt J
Matt J el 4 de Nov. de 2017
Yes, it does.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by