terminating the while if loop

2 visualizzazioni (ultimi 30 giorni)
sermet
sermet il 14 Lug 2017
Modificato: Jan il 14 Lug 2017
while abs(dE) > 1e-12
iteration=iteration+1;
E_old = E;
E = M+(ecc(1)*sin(E)); %eccentric anomaly
dE=E-E_old;
if iteration==1000
warndlg('iteration cannot be converged ', 'Error!', 'modal')
end
end
How can I modify above code to terminate the while loop when iteration exceeds 1000?

Risposta accettata

Star Strider
Star Strider il 14 Lug 2017
Modificato: Star Strider il 14 Lug 2017
I would add a break or return in your if block:
if iteration>=1000
warndlg('iteration cannot be converged ', 'Error!', 'modal')
return
end
  2 Commenti
sermet
sermet il 14 Lug 2017
it doesn't terminate while loop because abs(dE) is always higher than 1e-12.
Star Strider
Star Strider il 14 Lug 2017
change the if condition to:
if (iteration>=1000) || (abs(dE) < 1e-12)
warndlg('iteration cannot be converged ', 'Error!', 'modal')
return
end
That should work as you want it to.

Accedi per commentare.

Più risposte (1)

Jan
Jan il 14 Lug 2017
Modificato: Jan il 14 Lug 2017
limit = 1000;
iter = 0;
dE = 1;
while abs(dE) > 1e-12 && iter < limit
iter = iter + 1;
E_old = E;
E = M+(ecc(1)*sin(E)); %eccentric anomaly
dE = E-E_old;
end
if iter == limit
warndlg('iteration cannot be converged ', 'Error!', 'modal')
end

Categorie

Scopri di più su Particle & Nuclear Physics in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by