How can I solve the max iterations exceeded?
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I'm trying to solve root finding problem by using Newton method when I run the code I got this message. How can I avoid this message? Is there a problem with my code?
max_iter=10; err=1; tol=10^-6; n_iter=0;
while err>tol
n_iter=n_iter+1;
delta=-F(r)/dF(r);
r=r+delta;
err=abs(delta/r);
if n_iter>max_iter
warning('max iterations exceeded')
break
end
end
end
%%%%%%%%%%%%%%%%%%%%%
function out=F(r)
K=9*10^9; e= 1.6*10^-19; p=0.33*10^-10; Alpha=1.74637*10^-16;
out=-K*(e^2./r)+ Alpha*exp(-r./p);
end
%%%%%%%%%%%%%%
function out=dF(r)
K=9*10^9; e= 1.6*10^-19; p=0.33*10^-10; Alpha=1.74637*10^-16;
out=K*(e^2./r^2)- (Alpha/p)*exp(-r./p);
end
2 comentarios
James Tursa
el 24 de En. de 2017
Probably a problem with your code (e.g., recursion without proper convergence criteria, etc), but impossible to say without seeing your code. Can you post it?
John Chilleri
el 24 de En. de 2017
Providing your code would be useful, but without it, I can only suggest that you look into changing the MaxIter option, as the default may be too low for you.
Respuesta aceptada
James Tursa
el 24 de En. de 2017
Editada: James Tursa
el 24 de En. de 2017
Had to hunt for awhile to find a place where the function switches signs, but try this for a starting point:
r = 0.1e-9
0 comentarios
Más respuestas (2)
Steven Lord
el 24 de En. de 2017
It's impossible to say for certain without seeing a sample of your code, but more likely than not you're accidentally doing something like this (question 3.18 in this FAQ, if that link doesn't work.) If you call a function from within itself, you need to ensure that you have a base case that does not call the function itself, to end the recursion.
0 comentarios
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!