MATLAB Answers

0

terminating the while if loop

Asked by sermet on 14 Jul 2017
Latest activity Edited by Jan
on 14 Jul 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?

  0 Comments

Sign in to comment.

Tags

2 Answers

Answer by Star Strider
on 14 Jul 2017
Edited by Star Strider
on 14 Jul 2017
 Accepted Answer

I would add a break or return in your if block:
if iteration>=1000
warndlg('iteration cannot be converged ', 'Error!', 'modal')
return
end

  2 Comments

sermet on 14 Jul 2017
it doesn't terminate while loop because abs(dE) is always higher than 1e-12.
Star Strider
on 14 Jul 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.

Sign in to comment.


Jan
Answer by Jan
on 14 Jul 2017
Edited by Jan
on 14 Jul 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

  0 Comments

Sign in to comment.