Generazione di numeri casuali

Documenti analoghi
Laboratorio di Calcolo I. Applicazioni : Metodo Monte Carlo

- noise di conteggio ; f[m] è un numero intero che è la realizzazione di una variabile aleatoria con valor medio (valore atteso) f 0 [m].

Simulazione dei dati

Calcolo di integrali. max. min. Laboratorio di Calcolo B 42

PROBABILITÀ - SCHEDA N. 3 VARIABILI ALEATORIE CONTINUE E SIMULAZIONE

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

Il metodo Monte Carlo. Esempio di transizione al caos. Numeri (pseudo)casuali. λ 1. Analisi dati in Fisica Subnucleare

Statistica ARGOMENTI. Calcolo combinatorio

NUMERI CASUALI E SIMULAZIONE

Il Corso di Fisica per Scienze Biologiche

Vedi: Probabilità e cenni di statistica

Corso di Laurea: Diritto per le Imprese e le istituzioni a.a Statistica. Probabilità. Lezioni : 11, 12. Docente: Alessandra Durio

Probabilità classica. Distribuzioni e leggi di probabilità. Probabilità frequentista. Probabilità soggettiva

e n n xn ( 1) n ( 1) n n + 1 2e n x n 3n [ln x]n 1 n + 1 2e n 1

Generazione di numeri random. Distribuzioni uniformi

Teoria dei Fenomeni Aleatori AA 2012/13

Distribuzioni di probabilità

Distribuzioni e inferenza statistica

Analisi Matematica I per Ingegneria Gestionale, a.a Scritto del secondo appello, 1 febbraio 2017 Testi 1

P(X > 0) = P(X 1 = 1) + P(X 1 = 1, X 2 = 1, X 3 = 1) =

STATISTICA ESERCITAZIONE 9

Stima puntuale di parametri

LE DISTRIBUZIONI CAMPIONARIE

Analisi degli Errori di Misura. 08/04/2009 G.Sirri

Due variabili aleatorie X ed Y si dicono indipendenti se comunque dati due numeri reali a e b si ha. P {X = a, Y = b} = P {X = a}p {Y = b}

Esercizi su variabili aleatorie discrete

PROVE SCRITTE DI MATEMATICA APPLICATA, ANNO 2006/07

Introduzione alla probabilità. Renato Mainetti

Capitolo 6. La distribuzione normale

LICEO SCIENTIFICO QUESTIONARIO QUESITO 1

Esercizi di Calcolo delle Probabilità

L indagine campionaria Lezione 3

Variabili aleatorie continue

Capitolo 6 La distribuzione normale

Capitolo 12. Suggerimenti agli esercizi a cura di Elena Siletti. Esercizio 12.1: Suggerimento

Sviluppi e derivate delle funzioni elementari

SOLUZIONI DEL 1 0 TEST DI PREPARAZIONE ALLA 1 a PROVA INTERMEDIA

Algoritmi in C++ (prima parte)

Distribuzione Normale

Densità di probabilità del prodotto di due variabili casuali distribuite uniformemente

CALCOLO NUMERICO. Prof. Di Capua Giuseppe. Appunti di Informatica - Prof. Di Capua 1

Variabili casuali. - di Massimo Cristallo -

Calcolo delle Probabilità e Statistica, Ingegneria Civile e A&T e Informatica I prova finale a.a. 2016/17

MATEMATICA E STATISTICA CORSO A CORSO DI LAUREA IN SCIENZE BIOLOGICHE MOLECOLARI

Note sulla probabilità

Concetti di teoria dei campioni ad uso degli studenti di Statistica Economica e Finanziaria, A.A. 2016/2017. Giovanni Lafratta

RAPPRESENTARE CON UN COMPUTER FENOMENI CASUALI E UTILIZZARLI

Correzione primo compitino, testo B

Esercitazione 8 maggio 2014

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 9 Novembre 2015

SIMULAZIONE - 29 APRILE QUESITI

Algoritmi in C++ (seconda parte)

p k q n k = p n (k) = n 12 = 1 = ,1208. q = 1 2 e si ha: p 12 (8) =

Corso di Laurea in Ingegneria Informatica e Automatica (M-Z) Università di Roma La Sapienza

Metodi Computazionali. Generazione di numeri pseudocasuali

Laboratorio di Statistica 1 con R Esercizi per la Relazione. I testi e/o i dati degli esercizi contassegnati da sono tratti dai libri consigliati

FENOMENI CASUALI. fenomeni casuali

UNIVERSITÀ di ROMA TOR VERGATA

Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017

Corso di Laurea in Informatica Calcolo delle Probabilità e Statistica (269AA) A.A. 2016/17 - Prima prova in itinere

MEDIA aritmetica semplice (Gli indicatori di posizione)

Calcolo delle Probabilità 2

Probabilità 1, laurea triennale in Matematica I prova scritta sessione estiva a.a. 2008/09

FUNZIONI ELEMENTARI, DISEQUAZIONI, NUMERI REALI, PRINCIPIO DI INDUZIONE Esercizi risolti

Metodi Computazionali della Fisica Secondo Modulo: C++

Test delle Ipotesi Parte I

Esercitazioni di Statistica

Il processo inferenziale consente di generalizzare, con un certo grado di sicurezza, i risultati ottenuti osservando uno o più campioni

I appello di calcolo delle probabilità e statistica

LA DISTRIBUZIONE NORMALE o DI GAUSS

Esercitazione N. 1 (11 ottobre 2016)

04 - Numeri Complessi

Come risolvere i quesiti dell INVALSI - terzo

Statistica. Lezione 4

Transcript:

Generazione di numeri casuali Abbiamo già accennato all idea che le tecniche statistiche possano essere utili per risolvere problemi di simulazione di processi fisici e di calcoli numerici. Dobbiamo però imparare a generare variabili aleatorie che seguano distribuzioni di probabilità note, e per questo ci servono sequenze di numeri casuali. Generare buone sequenze di numeri realmente casuali è cosa complicata, per cui la migliore strategia consiste nell affidarsi a processi fisici intrinsecamente aleatori: decadimenti radioattivi rumore termico sistemi turbolenti (come ad esempio il cesto delle palline del lotto) Inutile dire che questi dispositivi non sono esattamente portatili. Laboratorio di Calcolo B 67

Generazione di numeri pseudo- casuali Siccome la generazione di numeri casuali è un po' scomoda, ci si accontenta di sequenze pseudo-casuali. Si tratta di fatto di sequenze perfettamente deterministiche, che tuttavia generano numeri interi uniformemente distribuiti in un dato intervallo, con periodo di ripetizione molto lungo e con basso livello di correlazione tra un elemento della sequenza e quello successivo. Esempio (Middle Square, Von Neumann, 1946): Dato un numero intero di 10 cifre (seme della sequenza) lo si eleva al quadrato e si prendono le 10 cifre centrali come numero successivo. 443177834 1956450151188931556 Provate per esercizio a implementare questo metodo. Laboratorio di Calcolo B 68

Uso della funzione random() In ambiente C esiste un generatore di numeri casuali uniformemente distribuiti. La funzione si chiama long int random() ed è definita in stdlib.h. Ogni chiamata a random() ritorna un intero compreso tra 0 e RAND_MAX (che, nelle macchine a 3 bits vale di solito 31-1). Se si vogliono numeri compresi tra 0 e 1 si usa: double rnd; rnd (double)random()/rand_max; Esiste anche una funzione void srandom(long int) che consente di definire il seme della sequenza (seme uguale sequenza uguale, la qual cosa è particolarmente utile in fase di debug). Se si vuole una sequenza differente ad ogni esecuzione del programma si può usare srandom(time()); Laboratorio di Calcolo B 69

La distribuzione binomiale Una interessante applicazione delle distribuzioni uniformi è la distribuzione binomiale. Consideriamo un evento che consista nella ripetizione di n prove indipendenti. L esito di ogni prova i è caratterizzato da una variabile aleatoria i discreta che assume il valore 0 con probabilità p e il valore 1 con probabilità q1-p. Si dimostra (Lab1B) che la variabile somma delle i assume il valore k con probabilità p( k, n, p) n k k n k p (1 p) Media e varainza della distribuzione binomiale sono date da: k np σ np(1 p) Laboratorio di Calcolo B 70

La distribuzione binomiale La binomiale risponde a domande del tipo: se lancio n volte una moneta, qual è la probabilità di ottenere testa k volte? Altra visualizzazione della binomiale è il tavolo binario. Si tratta di un piano inclinato con una serie di chiodi piantati in modo da formare un reticolo regolare. Una biglia, urtando un chiodo, può passare a destra o a sinistra con uguale probabilità (p 0.5). Il numero di righe di chiodi fornisce il numero di ripetizioni n; la posizione di arrivo della biglia è k. 0 1 3 n3 p0.5 k Laboratorio di Calcolo B 71

Simulazione della binomiale In laboratorio dovrete simulare un processo binomiale e confrontarlo con la distribuzione teorica. Si eseguono n estrazioni di numeri casuali compresi tra 0 e 1. Se il numero estratto è maggiore di p si somma 1, altrimenti 0. Il valore ottenuto, che sarà compreso tra 0 e n, si inserisce in un istogramma a n+1 bins, e si ripete la procedura M volte (n,p e M devono poter essere facilmente variati). Alla fine, se M è abbastanza grande, l istogramma approssimerà con buona precisione una binomiale. Si deve eseguire un fit per verificare che i valori di n e p ottenuti dal confronto con la binomiale teorica coincidano, entro gli errori, con quelli usati per la simulazione. Siccome per n grande la binomiale tende alla gaussiana, si può verificare questo fatto usando una gaussiana per eseguire il fit. Laboratorio di Calcolo B 7

Simulazione della binomiale: matriale occorrente int binevent(int p, int n); simula n ripetizioni di eventi binari con probabilità p e ritorna il numero di successi k double binomiale(int p, int n, int k); calcola la probabilità binomiale int/double bincoeff(int n, int k); calcola il coefficiente binomiale; qui si deve fare attenzione al modo in cui il calcolo viene eseguito, perché altrimenti si perde facilmente precisione o si eccedono i limiti delle variabili intere. Laboratorio di Calcolo B 73

Generazione di una gaussiana I Un metodo per generare una distribuzione gaussiana consiste nell affidarsi al teorema del limite centrale: La distribuzione della somma di N variabili aleatorie comunque distribuite tende, per N ->, ad una distribuzione gaussiana. Se sommiamo 1 variabili uniformemente distribuite in [-0.5, 0.5], ricordando che σ 1/ 1/ d 0 1/ 1/ ( ) 1 1 otteniamo (approssimativamente) una gaussiana con media 0 e varianza 1. Se servono medie o varianze diverse basta calcolare σ + <>. Laboratorio di Calcolo B 74

Traccia per l esperienza Provare il generatore di numeri casuali uniformemente distribuiti realizzando un istrogramma (che deve risultare piatto). Provate a variare il numero di eventi nell istogramma. Simulare un processo binario e confrontare (tramite best-fit) il risultato della simulazione con la distribuzione binomiale teorica. Provate diversi valori di n e p. Generare una distribuzione gaussiana utilizzando il teorema del limite centrale; verificare tramite fit il risultato ottenuto e ricavare i valori di media e varianza. Provate a cambiare il numero di variabili sommate. Laboratorio di Calcolo B 75

Calcolo di integrali Supponiamo di dover calcolare l integrale di una funzione in un intervallo limitato [ min, ma ], e di conoscere il massimo ed il minimo della funzione in tale intervallo. Se generiamo n punti uniformemente distribuiti nel rettangolo [ min, ma ][f min,f ma ] avremo che la frazione p di punti che cadono sotto la funzione è pari al rapporto tra l integrale e l area del rettangolo A. La distribuzione di successi è binomiale e si ha: I σ ( I ) ma min f ( ) d A p(1 n Ap p) Laboratorio di Calcolo B 76

Calcolo di π Se in particolare si sceglie come funzione l equazione del cerchio nell intervallo [0,1][0,1] si può determinare il valore di π. Questa è stata la prima applicazione del metodo di montecarlo (Buffon 1777). I 1 1 d 0 Laboratorio di Calcolo B 77 π 4

Generazione di distribuzioni di probabilità arbitrarie Abbiamo visto come generare eventi con distribuzione di probabilità uniforme, ed abbiamo anche visto in quale contesto tali eventi sono utili. Tuttavia la maggior parte dei problemi di statistica applicati alla fisica richiedono eventi con distribuzioni di probabilità non uniformi. È quindi importante imparare a generare eventi distribuiti secondo una generica densità di probabilità a partire da eventi distribuiti uniformemente. Laboratorio di Calcolo B 78

Il metodo della reiezione Supponiamo che la distribuzione da generare, f(), sia definita nell intervallo [ min, ma ] e sia, in tale intervallo, compresa tra 0 e f ma. Se estraiamo un valore di uniformemente in [ min, ma ] potremo decidere se accettarlo o meno sulla base di una seconda estrazione uniforme y in [0, f ma ] : se y è minore di f() accettiamo il valore di, altrimenti lo rigettiamo. Questo metodo genera, per costruzione, la distribuzione di probabilita desiderata. Il metodo è quello usato per il calcolo dell integrale. Laboratorio di Calcolo B 79

Limiti del metodo di reiezione Il metodo di reiezione non può trattare distribuzioni di probabilità in intervalli non limitati. Inoltre il metodo risulta molto inefficiente nel caso si manipolino distribuzioni con picchi stretti (in questo caso ci sono molte reiezioni...). Nel caso della gaussiana questo metodo non è applicabile. Il fatto che modulando una distribuzione uniforme con il valore della densità di probabilità si ottenga l integrale di tale distribuzione ci suggerisce che possa esistere un legame funzionale tra l integrale di una densità di probabilità ed una variabile aleatoria distribuita uniformemente. Questa idea è alla base del metodo di inversione. Laboratorio di Calcolo B 80

Il metodo di inversione Data la solita f(), definita in [ min, ma ], cerchiamo una funzione g tale che, se η è una variabile aleatoria distribuita uniformemente in [0,1], allora g(η) è distribuita secondo f in [ min, ma ]. Potremo porre: g(0) min g(1) ma p(η)dη dη f()d 0 1 η min ma Laboratorio di Calcolo B 81

Il metodo di inversione Cominciamo ad affrontare il problema inverso, ovvero dato distribuito secondo f() generare η. Consideriamo la funzione integrale normalizzata: Si vede subito che g -1 ( min ) 0 e che g -1 ( ma ) 1; proviamo adesso a calcolare la densità di probabilità di η. Sappiamo che: 1 min η g ( ) ma f min f ( q) dq ( q) dq p ( η) dη f ( ) d Laboratorio di Calcolo B 8

Quindi: Il metodo di inversione 1 dη dg ( ) p ( η) p( η) d d Ma la derivata di g -1 () è f() da cui: ( ) p( η) f ( ) f ( ) p( η) Abbiamo quindi dimostrato che se f() è una densità di probabilità la sua funzione integrale è una variabile aleatoria distribuita uniformemente in [0,1]. A questo punto dobbiamo essere capaci di invertire g -1 per ottenere g. Vale la pena di osservare che non esistono motivi per cui min ed ma non possano tendere all infinito. Va osservato pure che il metodo richiede il calcolo dell integrale di f, e quindi non si applica alla gaussiana. Laboratorio di Calcolo B 83 f 1

Il metodo di inversione: esempio Dobbiamo generare numeri distribuiti secondo un esponenziale negativo in [0, ]. Calcoliamo g -1 : η g 1 ( ) 0 0 e e q q dq dq 1 e Invertiamo per ottenere g: g( η) log(1 η) Se quindi estraiamo numeri η uniformemente distribuiti in [0,1] e calcoliamo g(η) otteniamo numeri distribuiti esponenzialmente in [0, ]. Laboratorio di Calcolo B 84

Laboratorio di Calcolo B 85 Generazione di una Generazione di una gaussiana gaussiana II II Consideriamo una gaussuana in due dimensioni: Scritta in coordinate polari diventa: Questa funzione si può integrare: du e rdr e rdrd r G ddy y G u r 0 0 / 0 0 ), ( ), ( π π θ θ π / ), ( r e r G θ ) / ( / / ), ( y y e e e y G +

Generazione di una gaussiana II La ricetta da seguire è quindi: Si generano due numeri θ e u, uno distribuito uniformemente in [0,π], l altro esponenzialmente in [0, ]. Si convertono questi numeri in coordinate cartesiane e si ottengono due numeri e y distribuiti gaussianamente; in formule: u log(1 η ) r θ y u πη r cos( θ ) r sin( θ ) Laboratorio di Calcolo B 86 1

Traccia per l esperienza Generare una distribuzione arbitraria usando il metodo di reiezione. Generare una distribuzione esponenziale usando il metodo di inversione. Generare una gaussiana usando la distribuzione bi-dimensionale. Verificare con un fit la correttezza delle distribuzioni ottenute nei tre casi. La generazione di una distribuzione gaussiana in due dimensioni è una buona occasione per familiarizzare con gli istogrammi bi-dimensionali. Laboratorio di Calcolo B 87