Determine f(x)=0 with newtons method

21 visualizzazioni (ultimi 30 giorni)
Joakim Karlsson
Joakim Karlsson il 4 Nov 2017
Commentato: Matt J il 4 Nov 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.

Risposta accettata

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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by