How can i correct Newton rhapson method??

2 visualizzazioni (ultimi 30 giorni)
Jo
Jo il 21 Ott 2013
Risposto: Pourya Alinezhad il 21 Ott 2013
In Newton rhapson method ,i try to solve nonlinear equation . I think below cod is right. but values are not shown .
i don't understand why the result show just '120' as value. x f(x) 120.000000, 48.000000 x f(x) 102.000000, 120.000000 what's the error in below ???
please~~
thanks for your help
end
f=inline('exp(-x)-x','x');
df=inline('-exp(-x)-1','x');
epsilon=0.0001;
imax=1000;
x0=input('initial xo=');
fx0=f(x0);
if abs(fx0)<=epsilon
fprintf('xo is value');
return;
end
if abs(df(x0))<=epsilon
fprintf('input another xo');
return;
end
for iter=1:imax
x0=x0-fx0/df(x0);
fx0=f(x0);
fprintf('\n x f(x) %f, %f','x0','fx0');
if abs(fx0)<=epsilon
fprintf('\n value x= %f','x0');
return;
end
end

Risposte (2)

Pourya Alinezhad
Pourya Alinezhad il 21 Ott 2013
you may use somthing like this :
while abs(xold -xnew) > tol
xold = xnew;
xnew = xold - feval(f,xold)/feval(fprime,old);
end
out = xnew;
delete the "for" loop and use a while command instead.

Pourya Alinezhad
Pourya Alinezhad il 21 Ott 2013
the algorithm should be like this pseudo code...
function out = Newton(f,fprime,xstart,tol)
xold = xstart;
xnew = xold - feval(f, xold)/feval(fprime,xold);
while abs(xold -xnew) > tol
xold = xnew;
xnew = xold - feval(f,xold)/feval(fprime,old);
end
out = xnew;

Categorie

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

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by