You are on page 1of 20

Cenno sui metodi Monte Carlo

I metodi probabilistici hanno una lunga storia ma solo dopo il 1944 `


e iniziato
un loro studio sistematico che ha portato a notevoli sviluppi. Attualmente `
e
stato valutato che quasi la met`
a delle applicazioni del calcolo scientifico ad
alte prestazioni (basate sullutilizzo di macchine con architettura avanzata
o su sistemi per il calcolo parallelo) utilizza lapproccio con metodi tipo
Monte Carlo o qualche versione pi`
u recente quali i metodi quasi-Monte
Carlo. Come vedremo un problema strettamente collegato alluso di metodi
probabilistici `
e il problema della generazione di numeri casuali.
Numeri, casualit`
a e simulazioni
Senza addentrarci troppo in discussioni filosofiche sul significato di casualit`
a, accenneremo ad alcune tra le molteplici applicazioni nelle quali intervengono i cosiddetti numeri casuali ed a come la matematica consenta di
affrontare problemi legati al concetto di caso.

Cenno sui metodi Monet Carlo

Numeri casuali sono utilizzati per costruire simulazioni di natura probabilistica di fenomeni fisici (reattori nucleari, traffico stradale, aereodinamica), di problemi decisionali e finanziari (econometrica, previsione DowJones), informatica (progettazione VLSI, rendering) o come semplice fonte
di divertimento (videogiochi).
Il forte legame che esiste tra il gioco e le simulazioni probabilistiche `
e
sottolineato dal fatto che a tali simulazioni viene generalmente dato il
nome di metodi Monte Carlo (in onore del famoso casino a Monaco).
Breve nota storica
Lidea di utilizzare in modo sistematico simulazioni di tipo probabilistico
per risolvere un problema di natura fisica viene generalmente attribuita al
matematico polacco Stanislaw Ulam (1909-1984).
Ulam fu uno dei personaggi chiave nel progetto americano per la costruzione
della bomba atomica (Manhattan project) durante la seconda guerra mondiale tra il 1943 ed il 1945 a Los Alamos, New Mexico (dopo la guerra,
1

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Ulam diede contributi essenziali anche nello sviluppo della bomba a fusione
di idrogeno o bomba H).
Il progetto Manhattan richiedeva infatti la risoluzione di un enorme numero
di problemi incredibilmente complessi (nella sua autobiografia Ulam descrive
come lidea di utilizzare simulazioni casuali per risolvere tali problemi gli sia
venuta mentre giocava a carte)
Generatori di numeri casuali
Innanzitutto cosa `
e un numero casuale?
Un esempio che tutti conosciamo consiste nel lancio di un dado, in effetti
limprevedibilit`
a del numero ottenuto come punteggio, compreso tra 1 e 6,
conferisce allo stesso una forma di casualit`
a.
Lidea stessa di utilizzare un calcolatore (quindi unoggetto puramente deterministico e di conseguenza prevedibile), per generare un numero casuale
quindi imprevedibile sembra costituire una sfida impossibile.
2

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

In effetti nessun calcolatore `


e in grado di generare numeri puramente casuali, ma solo numeri pseudo-casuali o quasi-casuali ossia numeri generati
da algoritmi numerici deterministici in grado di superare una serie di test
statistici che conferiscono a tali numeri una apparente casualit`
a.
Il metodo middle-square
Nei primi anni dellera dei computer (1946) John von Neumann sugger`
il famoso metodo middle-square per generare numeri pseudo casuali distribuiti in modo uniforme.
In tale distribuzione uniforme ogni possibile numero in un determinato intervallo `
e ugualmente probabile. Ad esempio se lanciamo un dado un certo
numero di volte ognuna delle facce da 1 a 6 si presenter`
a circa 1/6 delle
volte originando cos` una successione uniforme di numeri casuali compresi
tra 1 e 6.
3

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Oggi il metodo middle-square ha unimportanza solamente storica, ma nella


sua semplicit`
a evidenzia unaspetto importante nella generazione di numeri
pseudo-casuali al computer, ossia la necessit`
a di avere a disposizione molti
numeri casuali ed in modo rapido.
Esempio 1 [Metodo middle square]
Supponiamo di volere generare un numero casuale di 4 cifre, ossia un
numero tra 0000 e 9999. Il metodo middle-square richiede come tutti i
generatori di numeri casuali un valore iniziale, detto seme dal quale vengono
generati i successivi valori.
Ad esempio a partire da 1234, elevando tale numero al quadrato abbiamo
le otto cifre 01522756 delle quali teniamo solamente le quattro cifre di
mezzo 5227. Da queste ripetendo il procedimento otteniamo 27321529 e
quindi 3215.

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo


seme=8022

seme=3482

10000

10000

8000

8000

6000

6000

4000

4000

2000

2000

10

20

30

40

50

10

seme=6381
10000

8000

8000

6000

6000

4000

4000

2000

2000

10

20

30

30

40

50

seme=1234

10000

20

40

50

10

20

30

40

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Si noti che ogni nuovo numero nella successione `


e determinato univocamente dal suo predecessore. La successione generata quindi non potr`
a
essere casuale ma avr`
a solo il carattere di apparente casualit`
a.
In particolare ogni successione di numeri generati da questo algoritmo inizier`
a a ripetersi prima o poi. Il numero di numeri della sequenza prima che
intervenga una ripetizione `
e detto periodo della sequenza. La lunghezza di
tale periodo pu`
o essere considerata una misura della bont`
a del generatore
di numeri pseudo-casuali.
Sfortunatamente il metodo pu`
o degenerare in sequenze con periodi molto
brevi, ad esempio a partire dal valore 0 la sequenza ha sempre periodo 1,
oppure partendo con 43 e numeri a 2 cifre otteniamo la sequenza 43, 84,
05, 02, 00, 00, ....
Proviamo ad utilizzare il metodo middle-square per effettuare un semplice
esperimento di simulazione. Consideriamo la simulazione del lancio di un
dado definendo il risultato ottenuto d come
5 ms
]
d=1+[
104
6

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

dove ms e il numero generato tramite il metodo middle-square.


Simulando 10 lanci consecutivi a partire dal seme 8022 otteniamo risultati
che sembrano abbastanza realistici
5

Basta per`
o aumentare il numero di lanci per giungere a risultati insoddisfacenti (la successione ha infatti periodo 38).
Generatori lineari congruenziali
Nel 1948 venne proposto un generatore di numeri casuali distribuiti uniu brevemente LCG
formemente detto generatore lineare congruenziale o pi`
che a tuttoggi `
e ancora utilizzato.
Tale generatore venne presentato per la prima volta da D.H. Lemer esperto di teoria dei numeri. Il metodo LCG, analogamente al metodo
7

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

middle-square, ha bisogno di un seme per inizializzare la sequenza di numeri


secondo la seguente regola
xn+1 = (axn + c)mod m,

n 0,

dove a, c ed m sono opportuni numeri interi costanti. La notazione mod


m, ossia modulo m, significa che axn + c viene diviso per m e xn+1 posto
uguale al resto intero della divisione. Quindi xn+1 assume valori interi tra
0, 1, 2, . . . , m 1.
Alcuni esempi
Per esempio le scelte a = 13, c = 0 (ossia generatore puramente moltiplicativo) e m = 31 partendo dal valore iniziale x0 = 1 otteniamo per
n = 30
1 13 14 27 10 6 16 22 7 29 5 3 8 11 19 30 18 17
4 21 25 15 9 24 2 26 28 23 20 12
8

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Tale successione ha periodo 30 (ossia m 1). Tutti i numeri da 1 a 30


compaiono per poi ripetersi. Questo non dipende dalla scelta del seme
iniziale se non `
e nullo.
Luso del seme 0 origina invece la successione costante uguale a 0 per c = 0
indipendentemente da a e m. Quindi il massimo periodo di un generatore
puramente moltiplicativo `
e m 1. Nel caso di c 6= 0 il massimo periodo
sar`
a invece m, in quanto comparir`
a anche lo 0. Tale periodo massimo non
`
e per`
o raggiunto per tutte le scelte di a, c ed m, ad esempio per a = 7,
c = 7 e m = 10 partendo dal seme 7 si ha per n = 8
7

che ha solo periodo 4.


Bont
a di un generatore
Il problema della scelta dei migliori valori per a, c ed m `
e quindi il punto
cruciale del metodo. Cosa si intende per`
o per migliori? Un aspetto importante `
e la lunghezza del periodo da cui segue che m dovr`
a essere molto
9

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

grande. Inoltre per un dato m i valori di a e c dovranno essere tali che la


successione abbia periodo massimo (se m `
e grande la differenza tra m e
m1 `
e irrilevante e ci si pu`
o restringere al caso di generatori moltiplicativi,
c = 0, che sono pi`
u veloci).
Una delle scelte pi`
u popolari `
e
m = 231 1,

a = 75 ,

c = 0.

Questo garantisce un periodo di 231 2 = 2.147.483.646 ossia oltre 2


miliardi di numeri pseudo-casuali! (Il fatto che m = 231 1 sia un numero
primo
e fondamentale al fine di ottenere il massimo periodo).
Istogrammi di frequenza
Da un punto di vista pratico i generatori di numeri casuali restituiscono
invece di xn+1 il suo valore diviso per m, al fine di evitare numeri troppo
grandi. Inoltre evitano di reinizializzare la sequenza ogni volta.
10

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Generiamo una tabella di 10000 valori pseudo-casuali compresi tra 0 ed 1


e verifichiamone luniforme distribuzione tramite listogramma di frequenza ottenuto suddividendo lintervallo [0, 1] in N sottointervalli di uguale
ampiezza e calcolando quanti valori cadono in un dato intervallo.
250

200

150

100

50

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Nel nostro caso tale valore teorico dovrebbe essere esattamente pari a
10000/50 = 200.
11

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Verificare la casualit
a
Una richiesta pi`
u importante nel valutare la bont`
a di un generatore uniforme
di numeri pseudo-casuali `
e lassenza di correlazione tra i numeri generati
dallalgoritmo. In altre parole non deve emergere nessuna relazione tra xn
e xn+1 per n > 0. Questa propriet`
a pu`
o essere verificata graficamente
realizzando il grafico bidimensionale dei punti (xn, xn+j ) per j > 0. In tale
grafico non dovranno comparire linee, forme o altre strutture regolari. In
figura riportiamo il risultato per j = 1 con 1000 punti ottenuto con il
generatore LCG con scelta ottimale e con lo stesso generatore modificato
scegliendo come valori m = 31, a = 13 e c = 0.
1

0.9

0.9

0.8

0.8

0.7

0.7

0.6

0.6

0.5

0.5

0.4

0.4

0.3

0.3

0.2

0.2

0.1

0.1

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

12

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Generatori e MATLAB
I generatori di numeri casuali pi`
u recenti, come quello incluso nella versione
MATLAB successive alla 4, non sono basati sul metodo LCG. Essi sono
una combinazione di operazioni di spostamento di registri e manipolazione
sui bit che non richiedono nessuna operazione di moltiplicazione o divisione.
Questo nuovo approccio risulta estremamente veloce ed inoltre garantisce
periodi incredibilmente lunghi. Nelle ultime versioni MATLAB il periodo `
e 21492, che ad un milione di numeri casuali al secondo richiederebbe
10435 anni (circa 10425 volte let`
a delluniverso) prima di ripetersi!. Data la coincidenza dellesponente con la data della scoperta delle americhe
questo generatore viene comunemente chiamato il generatore di Cristoforo
Colombo.

Calcolo di integrali
Il metodo Monte Carlo pu`
o essere applicato nel calcolo di integrali, e risulta
competitivo con tecniche deterministiche quando il numero di dimensioni
del dominio di integrazione `
e elevato.
13

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Esempio 2 [Un metodo probabilistico per il calcolo di ]


Supponiamo di lanciare N freccette ad un bersaglio formato da un quadrato
di lato L contenete una circonferenza. Assumiamo che le freccette vengano
lanciate casualmente allinterno del quadrato e che quindi colpiscano il
quadrato in ogni posizione con uguale probabilit`
a (si veda la Figura).
1

1
1

Il bersaglio per L = 2 e la posizione dei primi 1000 lanci.

14

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Dopo molti lanci la frazione di freccette che ha colpito la circonferenza sar`


a
circa uguale al rapporto tra larea della circonferenza e quella del quadrato.
Quindi
Nc
1
L2

,
=
2
4L
4
N
dove N `
e il numero totale di freccette lanciate e Nc indica il numero di
freccette cadute allinterno della circonferenza. Potremo quindi usare il
valore 4Nc/N come approssimazione di . Il seguente script MATLAB
simula il procedimento
%
% Calcolo di pigreco con Monte Carlo
%
rand(seed,654321)
NC = 0;
PiE = zeros(500,1);
for k=1:500
x = -1+2*rand(100,1);
y = -1+2*rand(100,1);
15

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

NC = NC + sum(x.^2 + y.^2 <= 1);


PiE(k) = (NC/(k*100))*4;
end
plot(PiE)
` stata utilizzata la funzione MATLAB
Qualche commento `
e necessario. E
rand che genera una successione di numeri casuali distribuiti uniformemente
nellintervallo (0, 1). La sintassi principale per tale funzione `
e
Matrice = rand(Righe, Colonne),
che genera una matrice n m di numeri casuali distribuiti uniformemente.

16

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo


3.25

3.2

3.15

3.1
0

50

100

150

200

250

300

350

400

450

500

Stima di tramite il metodo Monte Carlo.

Si vede che la stima di migliora allaumentare di N ma che la convergenza `


e tuttaltro che veloce e uniforme. La presenza di fluttuazioni dovute
allapproccio probabilistico `
e infatti una caratteristica dei metodi Monte
Carlo. Listruzione rand(seed,Numero) assegna il valore Numero detto
seme al generatore di numeri pseudo-casuali. In questo modo ci possiamo rendere conto che in realt`
a non stiamo utilizzando veri numeri casuali
ma una loro approssimazione generata tramite un opportuno algoritmo.
17

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Infatti lanciando nuovamente il programma otteniamo sempre lo stesso


identico grafico fino a che non cambiamo il seme o commentiamo tale
istruzione. La bont`
a di tale generatore `
e di importanza fondamentale in
molte applicazioni basate su tecniche di tipo Monte Carlo.
Si noti inoltre che il metodo Monte Carlo precedente avrebbe potuto essere
utilizzato per calcolare larea della circonferenza. Infatti indicando con Ac
tale area si ha
Nc
2
.
Ac 4L
N
In modo analogo si pu
o procedere per il calcolo di aree di altre figure piane
o di integrali di funzioni non negative. Ad esempio abbiamo
Z b

Nc
f (x)dx (b a)f ,
N
a
dove f = max[a,b] f (x) ed Nc rappresenta il numero di punti (x, y) estratti
uniformemente sul rettangolo [a, b] [0, f] aventi y f (x).

18

Lorenzo Pareschi (pareschi@dm.unife.it)

Cenno sui metodi Monet Carlo

Un integrale del tipo


I[f ] =

Z b
a

w(x)f(x) dx

dove w(x) 0 `
e la funzione peso, pu`
o essere interpretato come il valore
medio della funzione f (x) = W f(x), relativo ad una variabile aleatoria x con
R
densit`
a di probabilit`
a p(x) = w(x)/W , dove W = ab w(x) dx. Uno stimatore
del valor medio di f `
e dunque dato da
N
1 X
fN =
f (xi)
N i=1

dove x1, x2, . . . , xn rappresentano un campionamento della variabile aleatoria


X con densit`
a p(x).

19

Lorenzo Pareschi (pareschi@dm.unife.it)

You might also like