26
Laboratorio di Calcolo B 42 Distribuzioni di probabilità e Distribuzioni di probabilità e principi del metodo di principi del metodo di Montecarlo Montecarlo Simulazione di sistemi complessi Distribuzioni di probabilità Istogrammi Generazione di numeri casuali Esempi di applicazione del metodo di Montecarlo

Distribuzioni di probabilità e principi del metodo di ...parodifa/labc/aa0304/LabcB/Trasp/... · esempio l’insieme delle molecole di un gas in un ... moltiplica per il numero totale

Embed Size (px)

Citation preview

Laboratorio di Calcolo B 42

Distribuzioni di probabilità e Distribuzioni di probabilità e principi del metodo di principi del metodo di

MontecarloMontecarloSimulazione di sistemi complessiDistribuzioni di probabilitàIstogrammiGenerazione di numeri casualiEsempi di applicazione del metodo di Montecarlo

Laboratorio di Calcolo B 43

Sistemi complessiSistemi complessiSupponiamo di voler eseguire una simulazione numerica di un sistema complesso, come ad esempio l’insieme delle molecole di un gas in un un recipiente.Da un lato l’operazione non presenta difficoltà, nel senso che possiamo pensare di trattare ogni molecola come un corpo rigido, utilizzando le tecniche esposte nelle lezioni precedenti.Ovviamente una simulazione realistica deve prevedere l’analisi del moto di un numero molto grande di corpi, e quindi l’utilizzo di una enorme potenza di calcolo.

Laboratorio di Calcolo B 44

Sistemi complessiSistemi complessiLo studio della fisica ci insegna pero che non tutte le caratteristiche di un sistema complesso emergono direttamente dall’analisi del moto dei singoli corpi: la temperatura ad esempio è una proprietà collettivadel gas che determina la distribuzione delle velocitàdelle singole molecole tramite un unico parametro.È chiaro quindi che la simulazione di sistemi complessi può beneficiare enormemente dell’utilizzo di tecniche statistiche, che aiutano a migliorare la comprensione del problema fisico e a ridurre i tempi di calcolo.Ovviamente è necessario essere capaci di trattare, all’interno del programma, le distribuzioni di probabilità delle grandezza fisiche interessanti.

Laboratorio di Calcolo B 45

Distribuzioni di probabilitàDistribuzioni di probabilitàConsideriamo un sistema caratterizzato dalla variabile x. Supponiamo che x sia una variabile aleatoria, ovvero una variabile il cui valore non è costante, ma varia seguendo una legge di probabilità nota. La variazione di x può essere legata a successive ripetizionidell’esperimento (ad esempio l’estrazione dei numeri del lotto, o la misura del tempo di decadimento di una particella) oppure alla presenza di molte repliche della variabile nel sistema (ad es. la velocità media delle molecole di un gas). La funzione densità di probabilità di x, p(x) possiede la proprietà:

∫=<<2

1

)()( 21

x

xdxxpxxxP

xx1 x2

Laboratorio di Calcolo B 46

Distribuzioni di probabilitàDistribuzioni di probabilitàp(x) può quindi essere pensata come la probabilità (infinitesima) che il valore della variabile aleatoria sia compreso tra x e x+dx. Ne discendono le relazioni:

Va osservato tuttavia che la distribuzione di probabilità continua è una astrazione matematica, nel senso che operativamente non è possibile distinguere valori di x arbitrariamente vicini. Usualmente si divide l’asse x in nintervalli e si assegna ad ogni intervallo una probabilità media. Si ottiene quindi una distribuzione discreta.

∫∫

∞+

∞−

∞+

∞−

+∞

∞−

−=

=

=

dxxpxx

dxxxpx

dxxp

)()(

)(

1)(

22σ ∑

=

=

=

−=

=

=

n

iii

n

iii

n

ii

pxx

pxx

p

1

22

1

1

)(

1

σ

Laboratorio di Calcolo B 47

IstogrammiIstogrammiGli istogrammi sono grafici usati per visualizzare le distribuzioni di probabilità (o di frequenza, se si moltiplica per il numero totale di eventi N) discrete (o continue, nell’approssimazione detta prima).Per ogni intervallo xi (detto “bin”) si disegna un rettangolo largo quanto l’intervallo e di altezza pari alla probabilità pi che x cada nell’intervallo (nel caso delle frequenze pari al numero di eventi nell’ intervallo, Ni= Npi).

0 30

0< x <30 in 30 intervalliNuovo evento

x = 12

Laboratorio di Calcolo B 48

BinningBinningIl numero di bin può influenzare in modo rilevante l’aspetto di un istogramma, e quindi va scelto caso per caso, cercando di evitare la presenza di molti bin poco popolati.

∆x = 0.0001

∆x = 0.05

∆x = 0.2

∆x = 1.6

Laboratorio di Calcolo B 49

Manipolazione di istogrammi in Manipolazione di istogrammi in CROOTCROOT

In definitiva un istogramma è un vettore che contiene la popolazione degli n bins. ROOT possiede una classe (TH1D) per gli istogrammi. Il costruttore è

TH1D(char *his, char *tit, int nCh, float xMin, float xMax);

Identificatore

Titolo Numero di bin

Estremi x

Laboratorio di Calcolo B 50

Manipolazione di istogrammi in Manipolazione di istogrammi in CROOTCROOT

In definitiva un istogramma è un vettore che contiene la popolazione degli n bins. ROOT possiede una classe (TH1D) per gli istogrammi. Il costruttore è

TH1D(char *his, char *tit, int nCh, float xMin, float xMax);

Per riempirliTH1D::Fill(float x, float w);

Valore dellavariabilealeatoria

Peso; w=1 per un singolo evento.

Laboratorio di Calcolo B 51

Manipolazione di istogrammi in Manipolazione di istogrammi in CROOTCROOT

In definitiva un istogramma è un vettore che contiene la popolazione degli n bins. ROOT possiede una classe (TH1D) per gli istogrammi. Il costruttore è

TH1D(char *his, char *tit, int nCh, float xMin, float xMax);

Per riempirliTH1D::Fill(float x, float w);

Per visualizzarliTH1D::Draw(char *opt);

Opzioni di visualizzazioneopt = ‘ H‘ Default

opt=‘SAME’ per sovrapporre istogrammi

Laboratorio di Calcolo B 52

Manipolazione di istogrammi in Manipolazione di istogrammi in CROOTCROOT

In definitiva un istogramma è un vettore che contiene la popolazione degli n bins. ROOT possiede una classe (TH1D) per gli istogrammi. Il costruttore è

TH1D(char *his, char *tit, int nCh, float xMin, float xMax);

Per riempirliTH1D::Fill(float x, float w);

Per visualizzarliTH1D::Draw(char *opt);

Per leggere il contenuto di un istogrammaTH1D::GetBinContent(int bin);

Numero di bin

Laboratorio di Calcolo B 53

UsoUso deglidegli istogrammiistogrammi neineiprogrammiprogrammi

A differenza di un normale grafico, che viene usato solo nella fase finale dei calcoli, un istogramma viene di solito usato, all’interno di un programma, come elemento di memorizzazione dei dati. Quando si analizzano milioni di ripetizioni di un evento non importa tanto il singolo valore di una variabile, ma la distribuzione di tale variabile in un dato intervallo. Dal contenuto dei bin di un istogramma si può risalire, in modo approssimato, alla media e alla varianza della distribuzione. Supponiamo di avere n misure xi, e di rappresentarle tramite un istogramma con M bin aventi il centro nei punti xc

j

=

=

−=

=

n

i

i

n

i

i

nxx

nxx

1

22

1

)(σ ∑

=

=

−=

=

M

j

jc

j

M

j

jc

j

nxxn

nxn

x

1

22

1

)(σ

Calcolo daidati

Calcolo dall’ istogramma

Laboratorio di Calcolo B 54

Confronto con distribuzioni Confronto con distribuzioni teoricheteoriche

Un modo semplice per confrontare graficamente un istogramma sperimentale con una distribuzione teorica è quello di sovrapporre il grafico della densità di probabilità. La cosa pare banale, ma si deve fare attenzione alla corretta normalizzazione: se i bin sono larghi ∆x e si hanno in totale Neventi, il bin con valore centrale xi conterrà in media Np(xi)∆x eventi. Per avere una corretta normalizzazione si deve quindi moltiplicare la densità di probabilità p(x) per il fattore N∆x.

Laboratorio di Calcolo B 55

Confronto con distribuzioni Confronto con distribuzioni teoricheteoriche

Un secondo metodo di confronto consiste nel costruire un istogramma identico a quello sperimentale, e di mettere in ogni bin un numero di eventi pari alla densità di probabilità calcolata al centro del binmoltiplicata per la larghezza del bin ∆x e per ilnumero totale di eventi osservati sperimentalmente N. Questo si puo fare con usa sola chiamata a TH1D::Fill utilizzando come x il centro del bin xc

i e come peso il fattore Np(xc

i)∆x.

Laboratorio di Calcolo B 56

TracciaTraccia dell’esercitazionedell’esercitazioneIn laboratorio dovrete realizzare un programma che:• legga da un file una serie di misure affette da un errore statistico e, presumibilmente, con distribuzione gaussiana (potrete usare una serie di misure da voi eseguite e/o dei files che vi forniamo);

• calcoli, durante la lettura, media e varianza della serie di misure, e memorizzi i dati in un istogramma;

• calcoli, a partire dal contenuto dei bin dell’istogramma, la media e la varianza approssimate;

• visualizzi l’istogramma sperimentale con sovrapposta la gaussiana teorica;

• visualizzi l’istogramma sperimentale con sovrapposto l’istogramma della distribuzione teorica.

I confronti vanno eseguiti variando il numero di bin e l’intervallo coperto dall’istogramma.

Laboratorio di Calcolo B 57

Fit Fit didi istogrammiistogrammiIl confronto “ad occhio” di un istogramma sperimentale con una distribuzione teorica non è ovviamente soddisfacente. La cosa migliore da fare è eseguire un fit che determini i parametri della distribuzione teorica che meglio approssima l’istogramma sperimentale.Il metodo è identico a quello che avete già usato per il fit ad una serie di punti sperimentali, e consiste nel minimizzare una funzione χ2 data da:

dove si è assunto che l’errore sul conteggio degli eventi nel bin j-mo sia pari alla radice del conteggio(vedere corso Lab1B).

( )∑= ∆

∆−=

binN

jCj

Cjj

vxpxNvxpxNn

v1

22

),(),(

)( r

rrχ

Laboratorio di Calcolo B 58

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Laboratorio di Calcolo B 59

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Puntatore a TH1D (globale) per

accedere all’istogramma

Laboratorio di Calcolo B 60

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Numero totale di misure

Laboratorio di Calcolo B 61

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Numero di bins

Laboratorio di Calcolo B 62

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Larghezza del bin, ottenuta come

distanza tra i centri di due bins vicini

Laboratorio di Calcolo B 63

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Loop sui bins

Laboratorio di Calcolo B 64

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Contenuto del bin j-mo

Laboratorio di Calcolo B 65

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Posizione del centro del bin j-mo

Laboratorio di Calcolo B 66

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Valore della densità di probabilità al centro

del bin

Laboratorio di Calcolo B 67

Fit Fit IstogrammaIstogramma--FunzioneFunzioneDato un istogramma ed una funzione di densità di probabilità, ecco la funzione χ2 da usare in minuit.TH1D *histo;...// Calcolo della funzione da minimizzare (chi-quadro)void xfcn(int &npar, double *der, double &chi2,

double *par, int iflag) {double Np = histo->GetEntries();int Nb = histo->GetNBinsX();double Dx = histo->GetBinCenter(2) -

histo->GetBinCenter(1);chi2=0.0;for (int ib=1; ib <= Nb; ib++){double nj = histo->GetBinContent(ib);double xc = histo->GetBinCenter(ib);double p = prob(xc, npar, par);chi2 += pow(nj-Np*Dx*p,2)/(Np*Dx*p);

}return chi2;

}

Contributo al χ2 del binj-mo

Controllare che p != 0