Author
dangkhue
View
215
Download
0
Embed Size (px)
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 probabilitIstogrammiGenerazione 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 linsieme delle molecole di un gas in un un recipiente.Da un lato loperazione 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 lanalisi del moto di un numero molto grande di corpi, e quindi lutilizzo 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 dallanalisi del moto dei singoli corpi: la temperatura ad esempio una propriet collettivadel gas che determina la distribuzione delle velocitdelle singole molecole tramite un unico parametro. chiaro quindi che la simulazione di sistemi complessi pu beneficiare enormemente dellutilizzo 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, allinterno del programma, le distribuzioni di probabilit delle grandezza fisiche interessanti.
Laboratorio di Calcolo B 45
Distribuzioni di probabilitDistribuzioni di probabilitConsideriamo 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 ripetizionidellesperimento (ad esempio lestrazione 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:
=
Laboratorio di Calcolo B 46
Distribuzioni di probabilitDistribuzioni di probabilitp(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 lasse 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, nellapprossimazione detta prima).Per ogni intervallo xi (detto bin) si disegna un rettangolo largo quanto lintervallo e di altezza pari alla probabilit pi che x cada nellintervallo (nel caso delle frequenze pari al numero di eventi nell intervallo, Ni= Npi).
0 30
0< x
Laboratorio di Calcolo B 48
BinningBinningIl numero di bin pu influenzare in modo rilevante laspetto 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, allinterno 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 xcj
=
=
=
=
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 Nx.
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 xci e come peso il fattore Np(xci)x.
Laboratorio di Calcolo B 56
TracciaTraccia dellesercitazionedellesercitazioneIn 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 dellistogramma, la media e la varianza approssimate;
visualizzi listogramma sperimentale con sovrapposta la gaussiana teorica;
visualizzi listogramma sperimentale con sovrapposto listogramma della distribuzione teorica.
I confronti vanno eseguiti variando il numero di bin e lintervallo coperto dallistogramma.
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 listogramma 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 lerrore sul conteggio degli eventi nel bin j-mo sia pari alla radice del conteggio(vedere corso Lab1B).
( )=
=
binN
jCj
Cjj
vxpxNvxpxNn
v1
22
),(),(
)( rr
r
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 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 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 allistogramma
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 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 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 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 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 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 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 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 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