How can i correct Newton rhapson method??
조회 수: 1 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
답변 (2개)
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.
댓글 수: 0
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;
댓글 수: 0
참고 항목
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!