MathGroup Archive 1992

[Date Index] [Thread Index] [Author Index]

Search the Archive

Loop problem

  • To: mathgroup at yoda.physics.unc.edu
  • Subject: Loop problem
  • From: spagiola at fri-nxt-pagiola.stanford.edu (Stefano Pagiola)
  • Date: Wed, 7 Oct 92 16:31:15 PDT

Dear Mathgroup,

I'm having no luck getting either Break[] or Return[] to get me out  
of a loop.  I have an iterating procedure in which values at each  
step are computed from values at the previous step.  If the new  
values ever fail one of several tests, I want a message printed and  
the loop to terminate.  So I embedded several If[test,Break[]]  
statements in my loop.  When one of the tests fails, however, the  
message prints but the loop does not terminate; rather, it seems to  
go to the next step (ie, the behavior I expect of Continue[]).

Any ideas/suggestions?

Here's the code:

s[1] = 1;
l[1] = 1;
For[t = 0,t < n,t++;
	{
	a[t] = f[s[t],l[t]];
	If[g[s[t],l[t]] <= 0,Return[Print["g[] < 0"]]];
	l[t+1] = h[a[t],s[t],l[t]]; 

	If[l[t+1] <= 0.05,Return[Print["l <= 0.05"]]];
	If[l[t+1] > 25,Return[Print["l > 25"]]];
	sss[t+1] = j[a[t],s[t],l[t]];
	Print[t," s = ",s[t]," lambda = ",l[t]]
	}]

And here's some sample output (skipping the early iterations):

...
88 s = 0.65357 lambda = 2.2681
89 s = 0.64986 lambda = 2.0907
90 s = 0.64609 lambda = 1.8881
91 s = 0.64226 lambda = 1.6572
92 s = 0.63834 lambda = 1.395
93 s = 0.63431 lambda = 1.098
94 s = 0.63012 lambda = 0.76208
l <= 0.05
l <= 0.05
l <= 0.05
l <= 0.05
l <= 0.05
...

As you can see, the l[t] < 0.05 test eventually fails, but the loop  
does not terminate: it keeps right on going, and of course, the test  
keeps failing.  Break[] has the same results.

Anyy assistance would be greatly appreciated.

---
-
Stefano Pagiola
Food Research Institute, Stanford University
spagiola at frinext.stanford.edu (NeXTMail encouraged)
spagiola at FRI-nxt-Pagiola.stanford.edu (NeXTMail encouraged)





  • Prev by Date: "FORTRAN" format followup
  • Next by Date: How to get a matrix multiply that considers dimensions?
  • Previous by thread: "FORTRAN" format followup
  • Next by thread: Re: Loop problem