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.

 Akzeptierte Antwort

Matt J
Matt J am 4 Nov. 2017
Bearbeitet: Matt J am 4 Nov. 2017

0 Stimmen

Your Df(x) looks very wrong.

2 Kommentare

Yes of course, my bad.
Df=@(x)x+4.*sin(2*x)-2;
This seems more correct?
Matt J
Matt J am 4 Nov. 2017
Yes, it does.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Robust Control Toolbox finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by