Re: For loops with mathematica....
- To: mathgroup at smc.vnet.net
- Subject: [mg101126] Re: [mg101069] For loops with mathematica....
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Wed, 24 Jun 2009 06:36:13 -0400 (EDT)
- Organization: Mathematics & Statistics, Univ. of Mass./Amherst
- References: <200906231105.HAA08136@smc.vnet.net>
- Reply-to: murray at math.umass.edu
The form (i, end} for an iterator is essentially an abbreviation for {i, 1, end}. And that is a special case of {i, start, end}. That, in turn, is a special case of {i, start, end, increment}. But you're asking about a more complicated set of values for i than any single iterator of that form will provide. Fortunately, in the current version of Mathematica, there is a more general iterator construction yet, {i, valueList}, which iterates over the values given in the list valueList. For example, Do[expr,{i,{3,8,12,291}}] will evaluate expr at each of i = 3, 8, 12, 291. So your problem now reduces to constructing the list of values you want, and that's straightforward: Join[Range[1,20], Range[300,400]] You are correct that if you want to "do" several things -- that is, evaluate several individual expressions during each iteration, then you separate them by semicolons, in other words, form from them a compound expression. For example: Do[Print[i^2];Print[i^3], {i,{3,8,12,291}}] You say that separating expressions with a semicolon in the first argument of Do "doesn't seem to work", but you didn't explain in what way it doesn't work. Finally, you might do some more reading of Mathematica documentation to learn more of the basics. And also to see whether you really need a Do loop at all, or any other kind of explicitly constructed iterative construct. You may find that Nest can nicely automate the entire process for you. Or that you can use whole-array processing, functional programming, or pattern-matching instead of an explicitly coded loop. And you might find that such an alternative procedure is much simpler to code and read and even more efficient than an explicitly coded loop. Julien wrote: > Hey guys, > > I am totally new to mathematica. > I want to use a simple loop for but with many arguments in the loop... > the help says to do > > Do[ thingstodo, {i,8}] > > i will go from 1 to 8 to do thingstodo. > > First question: what if I want i to go from 20 then 200 then 300 then 400, (can we give a sequence as argument?) > > Second question: I have a lot of line to do in things to do. should I separate everything with a ; (doesn t seem to work, or use a procedure or something?) > > > THanks a lot for your help!!! > > Julien > -- Murray Eisenberg murray at math.umass.edu Mathematics & Statistics Dept. Lederle Graduate Research Tower phone 413 549-1020 (H) University of Massachusetts 413 545-2859 (W) 710 North Pleasant Street fax 413 545-1801 Amherst, MA 01003-9305
- References:
- For loops with mathematica....
- From: Julien <jderr@cgr.harvard.edu>
- For loops with mathematica....