Re: save value in array during loop

*To*: mathgroup at smc.vnet.net*Subject*: [mg70513] Re: save value in array during loop*From*: Peter Pein <petsie at dordos.net>*Date*: Wed, 18 Oct 2006 04:17:38 -0400 (EDT)*References*: <eh20uf$2nj$1@smc.vnet.net>

schaa at geo.uni-koeln.de schrieb: > Hi there, > > I am new to mathematica and I have the following problem: > > save a certain value in an array calculated during a loop. > > My attempt: > > For[i=0,i<=12, > rho = i*25; > V[[i]] = UserFunction[0.5]; > i++] > > rho has the role of a global variable and is used in several other functions. > UserFunction stands for a function which in turn calls other functions. > V is the array of dimension 13 from 0 to 12. > > The code above does not work. What needed to be changed to make it > work? > > Thanks a lot > -Ralf > Hi Ralf, 1.) V is used as the name of a function in the Combinatorica-Package. If you don't use that, it _might_ be ok, to use a capital V as variable. 2.) if v has not been defined before, v[[i]] references nothing. 2.) The first element of a list is the first ;-), not the one with index zero. v[[0]] returns the "Head" of v. 3.) the use of global variables leads often to undesired side-effects. 4.) try to avoid For, Do etc. v=Table[rho=25 i; UserFunction[1/2], {i,0,12}] or v=(rho=25#; UserFunction[1/2])&/@Range[0,12] or v=Array[rho=25 i; UserFunction[1/2]&,13,0] but if you insist on using For, you have to build the list v before entering the loop and using Mathematicas order For[init,test,incr,body] should help too: v=Range[13]; For[i=0, i<=12, i++, rho=25 i; v[[i+1]]=UserFunction[1/2]]; Clear[i]; you see: it is very complicated to use For[] in Mathematica. Peter