http://www.laureescientifiche.units.it/ La simulazione numerica in fisica: approcci stocastici (aggiornamento e formazione insegnanti; corso CIRD - CP e M IDIFO3: Lab_A I15) G. Pastore e M. Peressi Universita’ di Trieste a.a. 2010/11 14 marzo 2011 Approcci stocastici Preferibili per: - fenomeni intrinsecamente casuali - sistemi con gran numero di gradi di liberta’ in cui l’interesse non e’ focalizzato sul singolo valore ma su proprieta’ medie dell’insieme Utilizzano: - numeri casuali Numeri casuali Una sequenza di numeri casuali e’ una sequenza di numeri che sembrano impredicibili ma che hanno ben definite proprieta’ statistiche Generazione di numeri casuali metodi manuali: - lancio di dadi, di monete... QuickTi me™ and a GIF decompressor are needed to see t his pict ure. QuickTi me™ and a GIF decompressor are needed to see t his pict ure. Quic kT i me™ and a GIF dec ompres s or are needed t o s ee thi s pi c ture. - estrazione da urne, da tabelle... Ottime proprieta’ di casualita’, ma... lunghi !!! praticamente inutilizzabili!!! - dispositivi elettronici ad hoc... NO! altri problemi... generazione con il computer: Generazione mediante metodi aritmetici Numeri pseudocasuali e proprieta’ statistiche Anche se si lavora con sequenze di numeri pseudocasuali (cosi’ sono quelli generati al computer, perche’ deterministicamente generati), va bene a patto che abbiano ben definite proprieta’ statistiche: 1) non correlazione tra i numeri 2) determinata distribuzione e relative proprieta’ (es. : uniforme) 0.05 0.15 0.25 0.35 0.45 0.55 <r> 0.65 0.75 0.85 0.95 Numeri pseudocasuali e algoritmi per la generazione un po’ di storia in brevissimo... (pseudo)Random numbers generation (pseudo)random numbers generation: example 1 - “Middle square” algorithm (Von Neumann, 1946) loop To generate a 10-digit integer sequence: - take a first one - square it - take the middle 10 digits of the result Limits of the algorithm: depending on the initial choice, you can be trapped into short loops: (pseudo)random numbers generation: example I1 - “Linear congruential method” (Lehemer, 1948) In+1 = (a In + c) mod m Limits of the algorithm: Numeri pseudocasuali e problemi... correlazione in iperpiani (routine IBM) More subtle limits of some algorithms... xi, p(xi) (xi, xi+1) Numeri pseudocasuali e algoritmi per la generazione il Linear Congruential Method implementato in modo semplice in: random_lc.f90 La funzione intrinseca del Fortran90: modulo ((a*old+c), m) restituisce il resto della divisione tra i due argomenti Artigianale e’ bello, ma non troppo: correlazioni con LCM e M=256 Quanti numeri generati? Quante coppie? Numeri pseudocasuali e procedure intrinseche Tipicamente ci sono procedure intrinseche un po’ piu’ sofisticate di questo nostro LCM che generano numeri casuali tra [0,1] con distribuzione uniforme e migliori proprieta’ statistiche Es. : in Fortran90: la subroutine random_number() in Pascal: la funzione Random Numeri pseudocasuali e procedure intrinseche Es. in Fortran90: la subroutine random_number() Si puo’ dichiarare un ‘seme’ (seed) di partenza rantest_intrinsic.f90 e rantest_intrinsic_con_seed.f90 A cosa servono i numeri pseudocasuali? • per calcolare integrali definiti... 4 x Area settore circ. Area quadrato PiMonteCarlo.java Pi.f90 # punti nel settore circ. # punti nel quadrato in onore del “pi-day” ;-) A cosa servono i numeri pseudocasuali? • per simulare processi casuali: • flusso di particelle tra due meta‘ di una scatola: box.f90 • .. Come si usano i numeri pseudorandom per simulare eventi che avvengono con una certa probabilita’ (prob)? 1) genero un numero pseudorandom r tra 0 e 1 2) lo confronto con prob 3) se r e’ < o = prob , l’evento accade, altrimenti no; genero un altro numero random e itero... call random_number(r) (accade...) else if (r <= prob) then (non accade...) end if Macroscopic systems towards equilibrium A simple example: non-interacting classical particles in a box (gas diffusion) A box is divided into two parts communicating through a small hole. One particle randomly can pass through the hole per unit time, from the left to the right or viceversa. N left(t): number of particles present at time t in the left side Given N left(0), what is N left(t) ? Another version: particles black/white in both sides (interdiffusion of two gases): per unit time, one from each side is picked at random and put in the other side: Nleftwhite(t)+Nleftblack(t)=constant; Nleftwhite(t)=? Approach to equilibrium -I macrostate: specified by the number of particles n on the left side; microstate: specified by the specific list of the n particles on the left side Approach to equilibrium II initial N(left)=1000 How to reduce fluctuations? - more particles - average over many simulation runs Equilibrium and entropy The number of microstates for the “particle in a box” model with N=10. The macrostate is specified by the number of particles on the left side, n. The total number of microstates for N=10 is 210=1024 n # of microstates log(# of micr.) 0 1 0.00 1 10 2.30 2 45 3.81 3 120 4.79 4 210 5.35 5 252 5.53 6 210 5.35 7 120 4.79 8 45 3.81 9 10 2.30 10 1 0.00 the most “random”! Equilibrium = Maximum number of possible microstates = Maximum entropy A cosa servono i numeri pseudocasuali? • per simulare processi casuali: • flusso di particelle tra due meta‘ di una scatola... • decadimento radioattivo • ... decay.f90 Random processes: radioactive decay Atoms present at time Probability for each atom to decay in Atoms which decay between and we use the probability of decay of each atom to simulate the behavior of the number of atoms left; we should be able to obtain (on average): Radioactive decay: numerical simulation Note: unbounded loop DO DO i = 1, nleft ! loop on time ! loop on all the nuclei left call random_number(r) IF (r <= lambda) THEN ! BASIC ALGORITHM nleft = nleft -1 ! update the nuclei left (*) ENDIF END DO WRITE (unit=7,fmt=*) t , nleft if (nleft == 0) exit t=t+1 END DO Note: “exit” =/= “cycle” (*) Notice that the upper bound of the inner loop (nleft) is changed within the execution of the loop; but with most compilers, in the execution the loop goes on up to the nleft set at the beginning of the loop; this ensures that the implementation of the algorithm is correct. The program prova.f90 in the same directory is a test for the behavior of the loop. Look also at decay-new.f90. If nleft would be changed (decreased) during the execution, the effect would be an overestimate of teh decay rate. CHECK with your compiler! Details on Fortran: unbounded loops [name:] DO exit [name] or [name:] DO END DO [name] possible forms of "do while": DO if (condition)exit END DO or: DO WHILE (.not. condition) ... END DO NOTE: first is better (if () exit can be placed everywhere in the loop, DO WHILE must execute the loop up to the end - Other note: Difference between EXIT and CYCLE Radioactive decay: N(t) results of numerical simulation plot of the results of decay simulation (N vs t) with N=1000 t N(t) ~ N0 exp(a t) log(N(t)) semilog plot (log(N) vs t) => log(N(t)) = log N0 + a t => slope is a t Radioactive decay: results of numerical simulation Semilog plot of the results of decay simulation for the same decay rate and different initial number of atoms: almost a straight line, but with important deviations (stochastic) for small N numerical simulations: OK on average and for large numbers A cosa servono i numeri pseudocasuali? • per simulare processi casuali: • flusso di particelle tra due meta‘ di una scatola... • decadimento radioattivo • random walk decay.f90 segue in dettaglio Random walks • come simulare? • quali proprieta’ interessano? Random walks unidimensionali Un camminatore puo’ andare a destra o a sinistra: : numero di passi : lunghezza del singolo passo (direzione casuale) ( relativo spostamento al passo -simo) : spostamento dal punto di partenza dopo passi ( ) , : probabilita’ di spostamento a destra o a sinistra Random walks unidimensionali Cosa possiamo calcolare PER OGNI CAMMINATORE dopo N passi ? : distanza DI UN CAMMINATORE dalla partenza : la sua distanza QUADRATICA dalla partenza Random walks Cosa possiamo calcolare unidimensionali PER PIU’ CAMMINATORI dopo N passi ? : spostamento MEDIO dopo N passi : spostamento QUADRATICO MEDIO dopo N passi ATTENZIONE!!! proporzionale al numero di passi Random walks unidimensionali Piu’ generale: Random walks Un’altra grandezza calcolabile SU PIU’ : probabilita’CAMMINATORI: che IN MEDIA sia lo spostamento finale dal punto di partenza dopo N passi (ma lasciamo da parte per ora ...) In piu’ dimensioni??? per il singolo camminatore per piu’ camminatori si definiscono anche in due o piu’ dimensioni: RW 1D: simulazione The basic algorithm: ix = position of the walker x_N, x2_N = cumulative quantities rnd(N) = sequence of N random numbers (1 run= 1 particle) RW 1D: simulazione rw1d.f90 Proprieta’ statistiche dei random walks (qui 1D) Random walks E’ facile calcolare analiticamente la probabilita’ unidimensionali per un random walk di N passi di finire in un punto x: si tratta di un triangolo di Pascal con degli zeri ! dei random walks (qui 1D) Random walks Per lunghi cammini (N grande) la probabilita’ che sia lo spostamento finale dal punto di partenza unidimensionali dopo N passi ha una distribuzione simmetrica rispetto alla media e con “larghezza” standard”,SD) (“deviazione La tavola di Galton Simulazione della distribuzione di probabilita’ della posizione finale di un random walk unidimensionale (con passoposizione variabile) Biglie che partono da una stessa centrale e cadono deviate da chiodi disposti secondo uno schema triangolare. Ogni volta che una sferetta colpisce un chiodo ha il 50% di probabilità di cadere a sinistra e il 50% a destra. Le palline si accumulano nelle scanalature collocate alla base della struttura, formando delle pile con una certa distribuzione. poche tante In questa simulazione le pile nelle scanalature sono la somma di N=8 variabili casuali, ma se si aggiungono più file di chiodi (cioè se si aumenta N, il numero di variabili casuali), l'andamento della distribuzione approssima quello della distribuzione normale. al solito, attenzione alla statistica; gia’ abbiamo visto per quanto riguarda Δ2N; vediamo anche per PN: RW 1D: simulation RW 1D: simulation RW 1D: simulation RW 1D: simulation Random Walks 2D Random Walks 2D Per piu’ camminatori: Random Walks 2D Per piu’ camminatori: RW 2D: simulazione rw2d.f90 rw2zoom.f90 (stampa posizioni ogni tot passi, per vedere la caratteristica frattale del cammino) 0 0.0000000 0.0000000 10 0.2242774 3.7794106 20 -1.7333623 1.3218992 30 -1.4481916 3.1119978 40 -2.2553353 3.5246484 50 -3.8911035 6.6665235 60 -3.6508965 8.0110636 if (mod(i,10)==0) ..... 1 0.6946244 2 0.9359566 3 1.8891419 4 0.9642899 5 0.1308700 6 0.2071800 7 0.9160752 8 0.2856980 9 1.0143363 10 0.2242774 3.7794106 11 -0.7752404 3.8104627 12 -1.7280728 3.5069659 13 -2.0930278 4.4379911 14 -3.0587580 4.1784425 15 -2.0729706 4.0104446 16 -1.8304152 3.0403070 17 -2.2890768 2.1516960 18 -1.7717266 1.2959222 19 -1.1920205 0.7193726 1.6898152 1.9922019 2.3725290 2.9251692 3.9222534 4.6275673 3.8512783 3.1663797 Random Walks 2D then WRITE (...) i,x,y end if WRITE (...) i,x,y Random Walks 2D self-similarity! plot every 10 steps plot every step ‘pl’: macro for gnuplot for plotting trajectories (suppose column 1 is ‘time’, 2 is x, 3 is y) and check self-similarity: set term postscript color set size square set out '1.ps' p [-20:5][-10:15] '1.dat' u 2:3 w l set out '10.ps' p [-40:20][-10:50] '10.dat' u 2:3 w l, 'contour' u 1:2 w l Use: gnuplot$ load ‘pl’ Random Walks 2D A cosa servono? un lungo elenco... - finanza - polimeri (SAW) - diffusione... Diffusione: tanti tipi di diffusione.... Ad es.: di neutroni all’interno di un reattore nucleare ma anche per modellare la diffusione dei fotoni attraverso la zona radiativa del sole: http://solarscience.msfc.nasa.gov/interior.shtml moto browniano e traiettoria frattale