tol = 1e-6; while true f=log(alpha)-psi(alpha)-log(Samplemean)+meanlnSample; f1=1/alpha-psi(1,alpha); alphanew=alpha-f/f1; if abs(alphanew-alpha) < tol break end alpha=alphanew; end
Newton Raphson Method: while loop
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Gianluca Borgna
el 9 de Sept. de 2023
Comentada: Torsten
el 11 de Sept. de 2023
Hi,
Maybe it's a silly question but i don't know ho to stop a while loop.
The condition for my while is when alphanew(i) - aplhanew(i-1) <toll stop but the index i is not required for while loop so i don't really know what to impose. And also i don't know how to stop the while loop when there's no solution.
while condition ?
f=log(alpha)-psi(alpha)-log(Samplemean)+meanlnSample;
f1=1/alpha-psi(1,alpha);
alphanew=alpha-f/f1;
alpha=alphanew;
end
Thanks in advance for the help!
0 comentarios
Respuesta aceptada
Voss
el 9 de Sept. de 2023
2 comentarios
Torsten
el 11 de Sept. de 2023
tol = 1e-6;
iter = 1;
Alpha(1) = alpha;
while true
f=log(alpha)-psi(alpha)-log(Samplemean)+meanlnSample;
f1=1/alpha-psi(1,alpha);
alphanew=alpha-f/f1;
iter = iter + 1;
Alpha(iter) = alphanew;
if abs(alphanew-alpha) < tol
break
end
alpha=alphanew;
end
plot(iter,Alpha)
Más respuestas (1)
John D'Errico
el 9 de Sept. de 2023
Editada: John D'Errico
el 9 de Sept. de 2023
There are many, MANY ways to stop a while loop. For example...
tol = 1e-8;
err = inf;
iter = 0;
itmax = 100;
while (abs(err) > tol) && (iter < itmax)
iter = iter + 1;
% do stuff that computes the error
...
end
The while loop will terminate IF the error ever drops below the tolerance, OR if the iteration counter is exceeded. A nice thing is, as long as you have the iteration counter in there, it cannot keep on running forever.
The alternative that is commonly used might be something like this:
tol = 1e-8;
err = inf;
iter = 0;
itmax = 100;
while true % Will run forever, UNLESS you break out of the loop
iter = iter + 1;
% do stuff that computes the error
...
if (iter >= itmax) || (abs(err) <= tol)
break
end
end
As you can see, both while loop styles are acceptable, and both will terminate when the time is right. Personally, I prefer the style where the test is in the while statement itself, as that makes it clear what will happen.
0 comentarios
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!