Sei sulla pagina 1di 8

Il metodo Monte Carlo

Analisi dati in Fisica Subnucleare

una tecnica numerica che si basa su sequenze di numeri casuali


per calcolare le probabilit associate a determinati eventi.
Pu essere considerato come un metodo per effettuare esperimenti
virtuali (simulazione) in quanto riproduce le caratteristiche
fluttuazioni statistiche di un esperimento reale.

Introduzione al metodo
Monte Carlo

In generale, dal punto di vista strettamente matematico, pu essere


considerato come una tecnica di integrazione numerica,
particolarmente utile per integrali in molte dimensioni.

(N.B. parte di queste trasparenze sono


riciclate da un seminario di L. Lista)
Gli autori minori fanno citazioni. I grandi artisti copiano
(I. Strawinsky)
F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Numeri (pseudo)casuali

F. Ambrosino

xn +1 = f ( xn )

Consideriamo ora la sequenza:

xn +1 = xn (1 xn )
La successione avr comportamenti diversi a
seconda del parametro
Se per certi valori di essa risultasse convergente,
per n che tende a infinito x varrebbe:

Il valore x0 che innesca la sequenza viene detto seme (random seed)


della sequenza. Ma come pu una sequenza perfettamente
deterministica sembrare casuale ?
Analisi Dati in Fisica Subnucleare
A.A. 2005-2006

Esempio di transizione al caos

Come osservato la base del metodo Monte Carlo la possibilit di


avere a disposizione una sequenza di numeri casuali. Tale sequenza
pu essere genuinamente casuale (come nel caso dei tempi di
decadimento di una sostanza radioattiva, o del risultato del lancio di
32 monete, per definire i 32 bits che rappresentano un dato numero)
o, molto pi spesso, essere un sequenza pseudo casuale (cio in
realt perfettamente deterministica !!!) di numeri:

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

x = x (1 x ) x =
F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Comportamento stabile

Biforcazione
xn

xn
Per superiore a 3
la serie non converge, ma
oscilla tra due valori:

Infatti, per sufficiente piccolo,


partendo da:

x0 = 0.5

xa = xb (1 xb)
xb = xa (1 xa)

la successione converge

n > 200

n > 200

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Comportamento caotico

Biforcazione II

xn

xn
Per ancora pi grande, la
sequenza caotica.

La biforcazione si ripete al
crescere di
Ci sono sequenze di 4, 8, 16
etc. valori che si ripetono

Per esempio per =4 i valori


riempiono densamente
lintervallo [0, 1]
n > 200

200 < n < 100000

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Generatore lineare congruenziale

Un esempio

Un semplice ma utile generatore che fornisce numeri distribuiti in


modo uniforme fornito dal seguente algoritmo:

xn +1 = (a xn + c) mod m

m = 248

I parametri interi a, c vanno scelti in modo da massimizzare il


periodo, il cui valore massimo possibile proprio m. I numeri generati
sono in generale compresi fra 0 ed m-1. Per ottenere numeri reali
uniformi in [0,1) si effettua banalmente la trasformazione:

xn
F. Ambrosino

xn
m

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Ad esempio la funzione di libreria standard del C, drand48() si basa


su un generatore lineare congruenziale con

a = 25214903917
c = 11
Il generatore lineare congruenziale ha alcuni difetti:
I bit meno significativi sono meno casuali di quelli pi significativi
Esistono sequenze correlate: una successione di n numeri pseudo
casuali vincolata ad un iperpiano n-1 dimensionale se vista in n
dimensioni, ed esistono m1/d di questi iperpiani (effetto Marsaglia)
F. Ambrosino

Generatori Fibonacci

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

10

Generatore Gaussiano

Una variante interessante, alla base del diffusissimo generatore


RANMAR, utilizzato in fisica delle particelle per moltissimi anni il
metodo alla Fibonaccci in cui ciascun elemento della serie non
funzione solo del precedente ma di pi di un elemento della serie
stessa.

xn = ( f ( xn p ) f ( xn q )) mod m

Una volta ottenuto un buon generatore uniforme, possibile


generare punti secondo una generica distribuzione di probabilit.
Una maniera per ottenere in modo molto semplice eventi distribuiti
secondo una Gaussiana fare la media di n numeri distribuiti
uniformemente: il teorema del limite centrale allora garantir che nel
limite di n infinito la media sar distribuita normalmente. In pratica
infinito pu essere un numero abbastanza piccolo

Risultati migliori in termini di periodo ed effetto Marsaglia si


possono ottenere combinando pi generatori, ad esempio usando
un generatore per ordinare in modo casuale le sequenze generate
da un altro generatore etc.
F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

11

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

12

Confronto con la Gaussiana

Distribuzione di 1/ni=1,n ri

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

13

14

Una maniera estremamente rapida per


generare direzioni uniformemente nello
spazio, senza nessuna chiamata a funzione a
parte quella per generare i numeri casuali
uniformi la seguente:

interessante notare che, una volta che si dispone di un


generatore uniforme in [0, 1] o di un generatore che
genera secondo la distribuzione normale N(0,1) facile
ottenere numeri distribuiti uniformemente in [a,b] o
secondo una Gaussiana arbitraria G(,). Basta applicare
le trasformazioni lineari:

1.
2.
3.
4.
5.

Genera r1,r2 uniformi in (0,1)


Calcola v1=2r1-1 (uniforme in (1,1))
Calcola R2 somma dei quadrati di v1 ed r2
Se R2>1 torna al passo 1
Calcola
vr
v2 r 2
sin = 2 1 22 ; cos = 1 2 2
R
R
6. Genera un terzo numero r3 e poni cos = 2r3 1
7. Il versore dato da (sin cos , sin sin, cos)

r uniforme in [0,1] q = a + (b a ) r unif. in [a, b]


r distribuito come N(0,1) q = + r distr. come G( , )

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Distribuzione angolare uniforme

Trasformazioni lineari

F. Ambrosino

F. Ambrosino

15

Generare una distribuzione nota (1)


Vogliamo ora generare punti secondo una generica (ma nota!) densit
di probabilit:

f ( x) =

Generare una distribuzione nota (2)


Se nota linversa della distribuzione
cumulativa, la variabile x definita come:

dP
dx

x = F 1( r )

Ricordiamo che la distribuzione


cumulativa data da:
x

F ( x) =

f ( x)dx

distribuita secondo la distribuzione f (x) se r


distribuita uniformemente tra 0 e 1

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

17

F. Ambrosino

Dimostrazione

dP
= f ( x) = e x
dx

Distribuzione esponenziale:

dr dF
=
= f ( x)
dx dx

F ( x) = f ( x) dx = e x

Quindi, se consideriamo la densit di probabilit per la variabile


casuale x (considerata come funzione della variabile casuale r) si
ha:

dP dP dr dP
=
=
f ( x)
dx dr dx dr

x = x
x = 0

= 1 e x

= r e x = 1 r x = ln(1 r )
1
x = F 1 (r ) = ln(1 r )

1 e

Se r ha una distribuzione uniforme, allora dP/ dr = 1, e quindi si ha


dP/ dx = f (x ) c.v.d
Analisi Dati in Fisica Subnucleare
A.A. 2005-2006

18

Distribuzione esponenziale

Siccome r = F (x ), allora

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

19

1-r e r hanno sempre


distribuzione uniforme
tra 0 e 1
F. Ambrosino

x = F 1 (r ) =
Analisi Dati in Fisica Subnucleare
A.A. 2005-2006

ln(r )
20

Distribuzioni discrete

Distribuzione di Poisson

La logica la stessa della generazione secondo una distribuzione


continua nota linversa della cumulativa:

Nella pratica per la distribuzione di Poisson, per molto grandi


lesponenziale e contenuto in P(k) pu essere al di l della
precisione floating point della macchina. Si preferisce allora
sfruttare il fatto che al limite per m che tende a infinito la
Poissoniana tende ad una Gaussiana generando z come N(0,1) ed
effettuando poi la trasformazione:

1) Estrai r uniformamente in (0,1)


2) Detta P(k) la somma delle probabilit della
distribuzione cercata per i valori da 0 fino a k
(con P(0) = 0 ) trova il k tale che
P(k) < r P(k+1)
3) I k cos ottenuti saranno distribuiti secondo la
distribuzione cercata.

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

k = max(0, [ + z ])

21

Distribuzione multinormale

1
1
f ( z) =
exp( z T 1z )
n/2
(2 )
2

Risulta utile allora la cosiddetta decomposizione di Cholesky :


supponiamo di aver costruito una matrice triangolare R (radice
quadrata) tale che V = RTR. Allora si ha:

xT Wx = xT ( RT R) 1 x = xT R 1 ( R T ) 1 x = z T 1z
Lo jacobiano della trasformazione di variabili fornisce poi il
fattore det(W)1/2 che completa la trasformazione. In definitiva se i
valori medi sono diversi da zero la trasformazione

1
det(W )1/ 2
exp( xT Wx)
n/2
(2 )
2
Analisi Dati in Fisica Subnucleare
A.A. 2005-2006

22

z = ( R T ) 1 x x = R T z

il problema (supposto il vettore dei valori medi


identicamente nullo) trovare la trasformazione x(z) tale che

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Distribuzione multinormale (2)

Se si deve generare secondo una distribuzione multinormale con n


variabili e matrice di covarianza V di dimensione n X n, a partire
da n variabili N(0,1) indipendenti z1, zn si pu utilizzare un
cambio di variabile da z a x in modo che x risulti correlato. In
pratica data:

f ( x) =

F. Ambrosino

x = + RT z
23

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

24

Decomposizione di Cholesky

Decomposizione di Cholesky (2)


Per n = 2 con fattore di correlazione si ha:

La matrice R si ottiene attraverso un procedimento iterativo a


partire da V(0) = V. Si costruiscono in successione le matrici:
(k )
ij

( k 1)
ij

=V

Rki Rkj

con i, j = k + 1,...n

Rii = Vii( k 1)
Rij =

Vij( k 1)
Rii

V (1) =
2
2
1 2 2 (1 )
2
1

R =
2
0 2 1

k = 1,...n 1
La decomposizione di Cholesky molto usata quando si devono
effettuare inversioni di matrici di covarianza con errori molto
grandi, come nei primi steps di un filtro di Kalman.
F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

25

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

Per quanto appena detto per ottenere una distribuzione binormale


correlata a partire da due numeri z1 e z2 distribuiti secondo N(0,1)
si esegue la trasformazione:

x1 = 1+ 1 z1
x2 = 2+ 2 ( z1 + 1 2 z 2 )

Per riprodurre una distribuzione:


m
1. x estratto unif. Tra a e b
2. Viene calcolato f=f(x)
3. Viene estratto r tra 0 e m,
dove mmaxx(f(x))
4. Se r>f ripeto lestrazione di x,
f(x)
se r<f accetto x

In questo modo, la densit


dei valori estratti prop.
a f(x)
Analisi Dati in Fisica Subnucleare
A.A. 2005-2006

26

Hit or miss Monte Carlo

Distribuzione binormale

F. Ambrosino

1 2

22

2
V ( 0) = V = 1
1 2
2

R = 1
0
0

27

F. Ambrosino

miss

hit

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

x
28

Campionamento per importanza


Il metodo pu essere ripetuto per regioni:
1. x estratto in una delle
regioni (1), (2), o (3) con prob.
proporzionale allarea della regione
2. Viene applicato
il metodo hit-or-miss limitatamente
alla regione scelta
In questo modo, la densit
dei valori estratti prop.
a f(x), ma si estrae un numero
minore di numeri casuali
(il programma pi veloce!)

a0

F. Ambrosino

Analisi Dati in Fisica Subnucleare


A.A. 2005-2006

a1

a2 x a3
29