How can i correct Newton rhapson method??

1 ビュー (過去 30 日間)
Jo
Jo 2013 年 10 月 21 日
編集済み: VBBV 2022 年 1 月 29 日
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

回答 (3 件)

Pourya Alinezhad
Pourya Alinezhad 2013 年 10 月 21 日
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 2013 年 10 月 21 日
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;

VBBV
VBBV 2022 年 1 月 29 日
編集済み: VBBV 2022 年 1 月 29 日
f=@(x) exp(-x)-x;% Use function handle
df=@(x) -exp(-x)-1;
epsilon=0.0001;
imax=1000;
x0= 2;
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
x0 = 0.3576
x f(x) 0.357609, 0.341738
x0 = 0.5587
x f(x) 0.558708, 0.013239
x0 = 0.5671
x f(x) 0.567130, 0.000020
value x= 0.567130
You are using variable as symbol in fprintf. Check with above code

Community Treasure Hunt

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

Start Hunting!

Translated by