Newton's method gives NaN. Can someone improve my code?
Show older comments
Hello everybody. I'm using Newton's method to solve a liner equation whose solution should be in [0 1]. Unfortunately, the coe I'm using gives NaN as a result for a specific combination of parameters and I would like to understand if I can improve the code I wrote for my Newton's method. In the specific case I'm considering, I reach the maximum iterations even if the tolerance is very low.
% % % % Script for solving NaN
mNAN= 16.1;
lNAN= 10^-4;
f= @(x) mNAN*x+lNAN*exp(mNAN*x)-lNAN*exp(mNAN);
Fd= @(x) mNAN*(1+lNAN*exp(mNAN*x));
tolNaN=10^-1;
nmax=10^8;
AB0 = 0.5;
[amNAN,nNAN,ierNAN]=newton(f,Fd,AB0,nmax,tolNaN);
amNAN
Llimit=f(0)
Ulimit=f(1)
fplot(@(x) mNAN*x+lNAN*exp(mNAN*x)-lNAN*exp(mNAN),[0 1.1])
function [x,n,ier] = newton(f,fd,x0,nmax,tol)
% Newton's method for non-linear equations
ier = 0;
for n = 1:nmax
x = x0-f(x0)/fd(x0);
if abs(x-x0) <= tol
ier = 1;
break
end
x0 = x;
end
end
Accepted Answer
More Answers (0)
Categories
Find more on Mathematics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!