metodo di monte carlo - ge.infn.itparodifa/labc/aa0506/labcb/lezioni/num... · simulare processi...

of 29/29
Metodo di Monte Carlo Numeri casuali La dis- tribuzione binomiale Esperienza Generazione gaussiana Integrali Metodo di Monte Carlo Il termine metodo di Monte Carlo si riferisce a qualsiasi metodo numerico che faccia uso di numeri “casuali” (random) per risolvere probabilisticamente un problema. Metodi di Monte Carlo sono normalmente utilizzati in ambito scientifico per: simulare processi stocastici simulare la risposta di apparati sperimentali calcoli numeri approssimati (integrali, etc..) 1 / 29

Post on 17-Feb-2019

218 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Metodo di Monte Carlo

Il termine metodo di Monte Carlo si riferisce a qualsiasi metodonumerico che faccia uso di numeri casuali (random) perrisolvere probabilisticamente un problema.

Metodi di Monte Carlo sono normalmente utilizzati in ambitoscientifico per:

simulare processi stocastici

simulare la risposta di apparati sperimentali

calcoli numeri approssimati (integrali, etc..)

1 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Applicazioni del metodo di Monte Carlo

I metodi probabilistici hanno una lunga storia ma solo dopo il1944 e iniziato un loro studio sistematico che ha portato anotevoli sviluppi.

Metodi Monte Carlo sono utilizzati per costruire simulazioni dinatura probabilistica di fenomeni fisici (reattori nucleari, trafficostradale, aereodinamica), di problemi decisionali e finanziari(econometrica, previsione Dow-Jones), informatica (progettazioneVLSI, rendering) o come semplice fonte di divertimento(videogiochi).

Il forte legame che esiste tra il gioco e le simulazioniprobabilistiche e sottolineato dal fatto che a tali simulazioni vienegeneralmente dato il nome di metodi Monte Carlo (in onore delfamoso casino a Monaco).

2 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Breve nota storica

Lidea di utilizzare in modo sistematico simulazioni di tipoprobabilistico per risolvere un problema di natura fisica vienegeneralmente attribuita al matematico polacco Stanislaw Ulam(1909-1984).

Ulam fu uno dei personaggi chiave nel progetto americano per lacostruzione della bomba atomica (Manhattan project) durante laseconda guerra mondiale tra il 1943 ed il 1945 a Los Alamos,New Mexico.

Il progetto Manhattan richiedeva infatti la risoluzione di unenorme numero di problemi incredibilmente complessi (nella suaautobiografia Ulam descrive come lidea di utilizzare simulazionicasuali per risolvere tali problemi gli sia venuta cercando dicalcolare la probabilita di successo al solitario).

3 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Numeri casuali

I metodi di MC richiedono la generazione dei valori (numericasuali) di variabili aleatorie di cui sono note le distribuzioni diprobabilita.

Un sequenza di numeri casuali e una sequenza di numeri che nonhanno alcuna relazione di successione tra di loro (ma cheseguono, tutti, una stessa distribuzione di probabilita).

Come generare sequenze di numeri casuali ?

Generare buone sequenze di numeri realmente casuali e cosacomplicata, si potrebbe pensare di affidarsi a processi fisiciintrinsecamente aleatori:

decadimenti radioattivi

rumore termico

sistemi turbolenti (cesto delle palline del lotto)

Inutile dire che questi dispositivi non sono esattamente portatili...

4 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Numeri casuali

I metodi di MC richiedono la generazione dei valori (numericasuali) di variabili aleatorie di cui sono note le distribuzioni diprobabilita.

Un sequenza di numeri casuali e una sequenza di numeri che nonhanno alcuna relazione di successione tra di loro (ma cheseguono, tutti, una stessa distribuzione di probabilita).

Come generare sequenze di numeri casuali ?

Generare buone sequenze di numeri realmente casuali e cosacomplicata, si potrebbe pensare di affidarsi a processi fisiciintrinsecamente aleatori:

decadimenti radioattivi

rumore termico

sistemi turbolenti (cesto delle palline del lotto)

Inutile dire che questi dispositivi non sono esattamente portatili...

5 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Numeri casuali

I metodi di MC richiedono la generazione dei valori (numericasuali) di variabili aleatorie di cui sono note le distribuzioni diprobabilita.

Un sequenza di numeri casuali e una sequenza di numeri che nonhanno alcuna relazione di successione tra di loro (ma cheseguono, tutti, una stessa distribuzione di probabilita).

Come generare sequenze di numeri casuali ?

Generare buone sequenze di numeri realmente casuali e cosacomplicata, si potrebbe pensare di affidarsi a processi fisiciintrinsecamente aleatori:

decadimenti radioattivi

rumore termico

sistemi turbolenti (cesto delle palline del lotto)

Inutile dire che questi dispositivi non sono esattamente portatili...

6 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Numeri pseudo-casuali

L idea stessa di utilizzare un calcolatore (quindi unoggettopuramente deterministico e di conseguenza prevedibile), pergenerare un numero casuale, quindi imprevedibile, sembracostituire una sfida impossibile.

Gli algoritmi utilizzati per generare sequenze di numeripseudo-casuali al calcolatore hanno periodo di ripetizione moltolungo e basso livello di correlazione tra un elemento dellasequenza e quello successivo.

Esempio (Middle Square, Von Neumann, 1946):dato un numero intero di 10 cifre (seme della sequenza) lo sieleva al quadrato e si prendono le 10 cifre centrali come numerosuccessivo:

44231778342 = 19564502151188931556

Provate per esercizio a implementare questo metodo.

7 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Numeri pseudo-casuali

In ambiente C/C++ esiste un generatore di numeri casualiuniformemente distribuiti.La funzione si chiama:

long int random();

ed e definita in stdlib.h.

Ogni chiamata a random() ritorna un intero compreso tra 0 eRAND MAX (che, nelle macchine a 32 bits vale di solito 231 1).

Se si vogliono numeri compresi in [0, 1] si usa:

double rnd = (double)random()/RAND MAX;

Dato un numeri casuali uniformemente distribuiti in [0, 1] conuna semplice trasformazione e possibile ottenere numeri casuali inun intervallo generico [xmin, xmax].

8 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Inizializzazione della sequenza

E utile poter fissare il seme della sequenza in modo da potergenerare sequenze diverse o esattemente la stessa sequenza (perscopi di debugging): a seme uguale corrisponde sequenza uguale.

void srandom(long int);

Linizializzazione va fatta una sola volta per tutte allinizio delprogramma.

Se si vuole una sequenza differente ad ogni esecuzione delprogramma si puo usare la funzione

long int time(time t *t);

che restituisce il numero di secondi dal 1 Gennaio 1970 (se non sie interessati a riempire la struttura time t *t si puo passare ilpuntatore nullo).

9 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

La distribuzione binomiale

Una interessante applicazione della generazioni di distribuzioniuniformi e la generazione di processi binomiali.

Tale distribuzione si base su eventi (prove) caratterizzati da duesoli risultati possibili a o a:

p(a) = pp(a) = q = 1 p

Questo tipo di evento e facile da generare ! Estraggo x [0, 1] sex < p allora il risultato e a altrimenti a.

Consideriamo un esperimento che consista nella ripetizione di nprove ciascuna con probabilita p. Si dimostra (Laboratorio diFisica) che la probabilita di ottenere k volte a vale:

p(k, n, p) =

(nk

)pk(1 p)nk

Media e varianza della distribuzione binomiale sono date da:

k = np 2 = np(1 p)10 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

La distribuzione binomiale

Una interessante applicazione della generazioni di distribuzioniuniformi e la generazione di processi binomiali.

Tale distribuzione si base su eventi (prove) caratterizzati da duesoli risultati possibili a o a:

p(a) = pp(a) = q = 1 p

Questo tipo di evento e facile da generare ! Estraggo x [0, 1] sex < p allora il risultato e a altrimenti a.

Consideriamo un esperimento che consista nella ripetizione di nprove ciascuna con probabilita p. Si dimostra (Laboratorio diFisica) che la probabilita di ottenere k volte a vale:

p(k, n, p) =

(nk

)pk(1 p)nk

Media e varianza della distribuzione binomiale sono date da:

k = np 2 = np(1 p)11 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

La distribuzione binomiale

Una interessante applicazione della generazioni di distribuzioniuniformi e la generazione di processi binomiali.

Tale distribuzione si base su eventi (prove) caratterizzati da duesoli risultati possibili a o a:

p(a) = pp(a) = q = 1 p

Questo tipo di evento e facile da generare ! Estraggo x [0, 1] sex < p allora il risultato e a altrimenti a.

Consideriamo un esperimento che consista nella ripetizione di nprove ciascuna con probabilita p. Si dimostra (Laboratorio diFisica) che la probabilita di ottenere k volte a vale:

p(k, n, p) =

(nk

)pk(1 p)nk

Media e varianza della distribuzione binomiale sono date da:

k = np 2 = np(1 p)12 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

La distribuzione binomiale

Esempio classico: n lanci di una mon-eta.

Altra visualizzazione della binomiale eil tavolo binario. Si tratta di un pianoinclinato con una serie di chiodi piantatiin modo da formare un reticolo regolare.Una biglia, urtando un chiodo, puopassare a destra o a sinistra con ugualeprobabilita (p = 0.5).

n numero di righe di chiodi;

k posizione di arrivo (oppurenumero di successi delleventopassaggio a destra).

13 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Esperienza in Laboratorio

In Laboratorio di Calcolo dovrete:

1 simulare N esperimenti composto ciascuno di n provebinomiali di probabilita p costruendo listogrammarappresentante la frequenza del numero di successo k.Per ogni prova si estrae un numero x compreso tra 0 e 1, sex < p si aumenta di uno il numero di successi.

2 confrontare (sovrapponendoli) listogramma simulato con ladistribuzione binomiale con parametri n e p;

3 confrontare (sovrapponendoli) listogramma simulato con ladistribuzione gaussiana avente come media e deviazionestandard quelle della distribuzione simulata.

14 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Esperienza in Laboratorio

Lesperienza continuera nel Laboratorio di Fisica dovequantificherete laccordo tra istogramma simulato e distribuzioneteorica calcolando il 2

2 =nbini=1

(N simi N teoi )2

N teoi

e valutandone la probabilita.Loperazione andra ripetuta per:

1 confronto binomiale simulata - binomiale teorica

2 confronto binomiale simulata - gaussiana teorica

Il primo accordo migliora per N (diminuzione fluttuazionestatistiche) e il secondo N e n (teorema del limitecentrale).

15 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Esperienza in Laboratorio: implementazione

int BinomialEvent(int p, int n);simula n ripetizioni di eventi binari con probabilita p e ritorna ilnumero di successi k

double Binomial(int p, int n, int k);calcola la probabilita binomiale

int/double BinomialCoeff(int n, int k);calcola il coefficiente binomiale(

nk

)=

n!

k!(n k)!Si deve fare attenzione al modo in cui il calcolo viene eseguito,perche altrimenti si perde facilmente precisione o si eccedono ilimiti delle variabili intere. Potete utilizzare variabili con rangepiu elevato e/o sfruttare semplificazioni tra numeratore edenominatore e la simmetria tra k e n k

16 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Esperienza in Laboratorio: implementazione

Confronto istogramma simulato/binomiale/gaussiana.Fate attenzione al confronto distribuzione continua (gaussiana) -distribuzione discreta (binomiale).Come integrare la gaussiana per ottenere i bin dellistogrammateorico ? Scelta ragionevole: bin di larghezza 1 centrati sunumeri interi.

x0 5 10

Fre

qu

enza

0

100

200

x0 5 10

Fre

qu

enza

0

100

200

17 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Esperienza in Laboratorio: implementazione

Confronto istogramma simulato/binomiale/gaussiana.Fate attenzione al confronto distribuzione continua (gaussiana) -distribuzione discreta (binomiale).Come integrare la gaussiana per ottenere i bin dellistogrammateorico ? Scelta ragionevole: bin di larghezza 1 centrati sunumeri interi.

x0 5 10

Fre

qu

enza

0

100

200

x0 5 10

Fre

qu

enza

0

100

200

18 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Esperienza in Laboratorio: implementazione

Confronto istogramma simulato/binomiale/gaussiana.Fate attenzione al confronto distribuzione continua (gaussiana) -distribuzione discreta (binomiale).Come integrare la gaussiana per ottenere i bin dellistogrammateorico ? Scelta ragionevole: bin di larghezza 1 centrati sunumeri interi.

Il seguito in Laboratorio di Fisica :

calcolo della funzione 2 e della sua probabilita (utilizzate ilmetodo di TMathdouble TMath::Prob(double chi2, int ndof))ndof e il numero di gradi di liberta.nel calcolo del 2 (vedi Lab. Fisica) dovete fare in modo cheN teoi 5, sara quindi necessario ragruppare i bindellistogramma teorico (e di conseguenza di quellosimulato) con meno di 5 entries.

19 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Traccia esperienza

Traccia:

Provare il generatore di numeri casuali uniformementedistribuiti realizzando un istogramma (che deve risultarepiatto). Provate a variare il numero di eventinellistogramma.

Simulare un processo binomiale (scegliendo N , n e p) econfrontate listogramma simulato con la distribuzionebinomiale teorica e la distribuzione gaussiana teorica aventestessa media e deviazione standard.

Facoltativamente potete impostare il calcolo del 2 che vi serviraa laboratorio di Fisica.

20 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Generazione gaussiana / Teorema limite centrale

Un metodo (poco efficiente) per generare una sequenza di numericasuali distribuiti secondo una gaussiana consiste nellutilizzare ilteorema del limite centrale (puo anche essere visto come unaverifica del teorema):

La distribuzione della somma di N variabili aleatorie comunquedistribuite tende, per N , ad una distribuzione gaussiana.

Consideriamo una variabile xuniformemente distribuita tra[0.5, 0.5]

x =

0.50.5

dx = 0

2 =

0.50.5

x2dx =1

12

e definiamo X =N

i=1 xi X-0.4 -0.2 0 0.2 0.4

Fre

qu

enza

0

500

1000

X-0.4 -0.2 0 0.2 0.4

Fre

qu

enza

0

500

1000

N = 121 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Generazione gaussiana / Teorema limite centrale

Un metodo (poco efficiente) per generare una sequenza di numericasuali distribuiti secondo una gaussiana consiste nellutilizzare ilteorema del limite centrale (puo anche essere visto come unaverifica del teorema):

La distribuzione della somma di N variabili aleatorie comunquedistribuite tende, per N , ad una distribuzione gaussiana.

Consideriamo una variabile xuniformemente distribuita tra[0.5, 0.5]

x =

0.50.5

dx = 0

2 =

0.50.5

x2dx =1

12

e definiamo X =N

i=1 xi X-1 -0.5 0 0.5 1

Fre

qu

enza

0

500

1000

N = 222 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Generazione gaussiana / Teorema limite centrale

Un metodo (poco efficiente) per generare una sequenza di numericasuali distribuiti secondo una gaussiana consiste nellutilizzare ilteorema del limite centrale (puo anche essere visto come unaverifica del teorema):

La distribuzione della somma di N variabili aleatorie comunquedistribuite tende, per N , ad una distribuzione gaussiana.

Consideriamo una variabile xuniformemente distribuita tra[0.5, 0.5]

x =

0.50.5

dx = 0

2 =

0.50.5

x2dx =1

12

e definiamo X =N

i=1 xi X-2 0 2

Fre

qu

enza

0

500

1000

1500

N = 623 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Generazione gaussiana / Teorema limite centrale

Un metodo (poco efficiente) per generare una sequenza di numericasuali distribuiti secondo una gaussiana consiste nellutilizzare ilteorema del limite centrale (puo anche essere visto come unaverifica del teorema):

La distribuzione della somma di N variabili aleatorie comunquedistribuite tende, per N , ad una distribuzione gaussiana.

Consideriamo una variabile xuniformemente distribuita tra[0.5, 0.5]

x =

0.50.5

dx = 0

2 =

0.50.5

x2dx =1

12

e definiamo X =N

i=1 xi X-5 0 5

Fre

qu

enza

0

500

1000

1500

2000

N = 1224 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Calcolo di Integrali

Supponiamo di dover calcolare lintegrale di una funzione in unintervallo limitato [xmin, xmax], e di conoscere il massimo ed ilminimo della funzione in tale intervallo.Se generiamo n punti uniformemente distribuiti nel rettangolo

[xmin, xmax] [fmin, fmax]avremo che la frazione p di punti che cadono sotto la funzione epari al rapporto tra lintegrale e larea del rettangolo A.

La distribuzione di successi e binomiale e si ha:

I =

xmaxxmin

f(x)dx = Ap = ANfavNtot

(I) = A

p(1 p)

Ntot

25 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Calcolo di Integrali

Supponiamo di dover calcolare lintegrale di una funzione in unintervallo limitato [xmin, xmax], e di conoscere il massimo ed ilminimo della funzione in tale intervallo.Se generiamo n punti uniformemente distribuiti nel rettangolo

[xmin, xmax] [fmin, fmax]avremo che la frazione p di punti che cadono sotto la funzione epari al rapporto tra lintegrale e larea del rettangolo A.

La distribuzione di successi e binomiale e si ha:

I =

xmaxxmin

f(x)dx = Ap = ANfavNtot

(I) = A

p(1 p)

Ntot

26 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Calcolo di

Se in particolare si scegliecome funzione lequazionedel cerchio nellintervallo[0, 1] [0, 1] si puo deter-minare il valore di

= 4I = 4NfavNtot

27 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Calcolo di

Prima applicazione del metodo di Monte Carlo (Buffon 1777).Consideriamo una vasta area in cui siano tracciate linee retteparallele a distanza d gettiamo quindi a caso su di essa un sottileago di lunghezza L < d.Qual era la probabilita che lago intersechi una linea ?

P (intersezione) = P (x < L/2sin)

Se gli aghi sono lanciati a caso x [0, d/2], [0, ], quindi

P (intersezione) =NfavNtot

=L/2

0 sind

d/2=

2L

dPoco efficiente...28 / 29

Metodo diMonteCarlo

Numericasuali

La dis-tribuzionebinomiale

Esperienza

Generazionegaussiana

Integrali

Calcolo di Integrali

Quando diventa conveniente valutare un integrale con il metodoMonte Carlo ?Ricordiamo che ogni estrazione implica il calcolo della funzioneintegranda (per stabilire se y < f(x) cioe se il punto e contenutonellarea).Consideriamo una funzione a m dimensioni e chiamiamo N ilnumero di valutazioni della funzione integrale:

Simpson: fissato a n il numero di campionamenti perdimensione N vale nm

Monte Carlo: la precisione migliora come 1/

N

Quando a parita di tempo di esecuzione i due metodi dannoprecisioni simili con stesso tempo di esecuzione ? La risposta none semplice perche dipende da come e fatta la funzione.In generale pero per m > 4 il metodo Monte Carlo comincia adiventare competitivo.

29 / 29

Metodo di Monte CarloNumeri casualiLa distribuzione binomialeEsperienzaGenerazione gaussianaIntegrali