Monte Carlos from scalar to list, possibly from for-loop to
- To: mathgroup at smc.vnet.net
- Subject: [mg121776] Monte Carlos from scalar to list, possibly from for-loop to
- From: "niels.gierse at gmail.com" <niels.gierse at googlemail.com>
- Date: Sat, 1 Oct 2011 03:09:05 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Dear all, I started setting up an extremely simple Monte Carlo based Mathematica simulation. So far it works for a single particle with this code: For[t = 0, t < tmax, t = t + dt, { z = z + vz ;(* move particle *) rnd = Random[]; (* throw the dice*) pion = ne[z]*sigvstate[Te[z]][[state]]*dt; (* compute ionization probability in corona equilibrium *) If[ rnd < pion, state = state + 1]; PhLoc = Append[PhLoc, z]; PhState = Append[PhState, state]; }] the time steps are iterated in a for loop. The particle is moved, then a random variable is taken. Ionization probability is computed and compared with the random variable. The ionization is accounted for in the variable 'state': If[ rnd < pion, state = state + 1]; Obviously I would like to expand this now to many particles, possibly created by a distribution function. So if I design every variable to be a list of length of the number of particles, is there a way to achieve the same functionality? As you can see the ionization probability is of course a function of the ionization state. x={x1,x2,...} rnd={rnd1,rnd2,...} pion={pion1,pion2,...} state={state1,state2...} So is there a way to get the if statement to a list? The second question is related. Is there a neat way to get rid of the for-loop? I played a little bit around with the Map command, but could not get it right. Cheers, Niels