laboratorio processi stocastici annalisa pascarella

of 32/32
Laboratorio Processi Stocastici Annalisa Pascarella

Post on 01-May-2015

233 views

Category:

Documents

10 download

Embed Size (px)

TRANSCRIPT

  • Slide 1
  • Laboratorio Processi Stocastici Annalisa Pascarella
  • Slide 2
  • Algoritmo istogramma INF = -4; SUP = 4; DELTA = 0.4; NUM_INT = (SUP-INF)/DELTA; % numero di intervalli contatore = zeros(1,NUM_INT) % inizializziamo il contatore; for i = 1:size(data,2) % per ogni dato for j = 1: NUM_INT % per ogni intervallo if data(i)>INF+(j-1)*DELTA && data(i)
  • Generatore lineare congruenziale Il metodo LCG ha bisogno di un seme per generare la sequenza di numeri pseudo-casuiali secondo la seguente regola deterministica x n+1 = (ax n +c)mod m, n>=0 con a,c ed m opportuni numeri interi costanti x n+1 assume valori compresi tra 0, , m-1 Ad es. per a=13, c=0 (generatore puramente moltiplicativo) ed m=31 partendo da x 0 = 1 si ottiene 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 tale successione ha periodo 30 (= m-1). tutti i numeri da 1 a 30 compaiono per poi ripetersi
  • Slide 15
  • Bont di un generatore LCG Il problema della scelta dei migliori valori di a, c ed m il punto cruciale del metodo un aspetto importante la lunghezza del periodo che dovr essere molto grande, per cui m dovr essere grande un altro aspetto consiste nel garantire che per un dato m i valori di a, c siano tali che la successione abbia periodo massimo Generatore periodico: periodo massimo M, raggiungibile solo se 1. c e M sono primi tra loro 2. a-1 divisibile per tutti i fattori primi di M 3. a-1 multiplo di 4 se M multiplo di 4
  • Slide 16
  • Bont di un generatore LCG Una delle scelte pi popolari m=2 31 -1, a=7 5, c=0 questo garantisce un periodo di 2 31 -2=2147483646 ossia oltre 2 miliardi di numeri pseudo-casuali il fatto che 2 31 -1 sia un numero primo fondamentale al fine di ottenere il massimo periodo x n+1 = (ax n +c)mod m, n>=0
  • Slide 17
  • Un algoritmo per generare numeri random a = 7^5 M = 2^(31)-1 c=0 L(1) = 1; for i = 2:100 L(i) = mod(a*L(i-1)+c, M) u(i) = L(i)/M end resto = mod(dividendo,divisore) Gli u(i) sono distribuiti in maniera uniforme tra 0 e 1. Provare per credere
  • Slide 18
  • Verifica funzionamento 1. Fare istogramma dei numeri random generati 2. Modificare la lunghezza del vettore di numeri casuali (ad es. 100, 1,000 e 10,000) e osservare la omogeneit della distribuzione
  • Slide 19
  • Verificare la casualit Una richiesta importante al fine di valutare la bont di un generatore uniforme di numeri pseudo-casuali lassenza di correlazione tra i numeri generati dellalgoritmo. Non deve emergere nessuna relazione tra x n e x n+1 per n>0. Questa propriet pu essere verificata graficamente realizzando il grafico di ( x n, x n+j ) per j>0 nel grafico non dovranno comparire linee, forme o altre strutture regolari Provare a disegnare il grafico per j=1 con 1000 punti ottenuti con il generatore LCG con scelta ottimale con i valori m=31, a=13, e c=0
  • Slide 20
  • Generatori e MATLAB I generatori di numeri casuali pi recenti non sono basati sul metodo LCG, ma 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 e garantisce periodi incredibilmente lunghi Nelle ultime versioni di MATLAB il periodo 2 1492 un milione di numeri casuali al secondo richiederebbe 10 435 anni prima di ripetersi! data la coincidenza dellesponente con la data della scoperta dellAmerica questo generatore comunemente chiamato il generatore di Cristoforo Colombo
  • Slide 21
  • rand La funzione rand genera una successione di numeri casuali distribuiti uniformemente nellintervallo (0,1) La sintassi di tale funzione rand(n,m) che genera una matrice n x m di numeri casuali distribuiti uniformemente Per vedere gli algoritmi utilizzati da MATLAB help rand
  • Slide 22
  • Esercizio Sia X una v.a. uniforme nellintervallo [0,1]. La si campioni n volte, con n=10 2, 10 3, 10 4, 10 5. Per ciascun valore di n si calcolino media e varianza campionarie (mediante i comandi mean e var) si visualizzi listogramma dei valori campionati si visualizzi la funzione di ripartizione empirica dei dati mediante il comando cdfplot e la si confronti graficamente con la funzione di ripartizione cumulativa di X.
  • Slide 23
  • Calcolo di Supponiamo di lanciare N freccette ad un bersaglio formato da un quadrato di lato L contenente una circonferenza Assumiamo che le freccette siano lanciate casualmente allinterno del quadrato e che quindi colpiscano il quadrato in ogni posizione con uguale probabilit Dopo molti lanci la frazione di freccette che ha colpito la circonferenza sar uguale al rapporto tra larea della circonferenza e quella del quadrato pu essere usato per stimare
  • Slide 24
  • Esercizio Calcolare col metodo Monte Carlo considerare un quadrato di lato 2 (come in figura) il cui centro coincide con lorigine di un sistema di riferimento Oxy e una circonferenza inscritta in esso generare 2 vettori, x e y, di numeri casuali di lunghezza N calcolare il numero dei punti (NC) (x,y) cos generati che cadono allinterno del cerchio stimare usando la formula ripetere per diversi valori di N
  • Slide 25
  • Aree e volumi Il metodo Monte Carlo pu essere usato anche per calcolare larea della circonferenza La generalizzazione al calcolo di volumi nello spazio immediata. Indicato con L il lato del cubo contenente la figura di cui si vuole misurare il volume V avremo dove Nc il numero di punti generati in modo uniforme nel cubo e interni alla figura di cui si vuole misurare il volume
  • Slide 26
  • Metodo Monte Carlo Vengono denominate le tecniche che utilizzano variabili casuali per risolvere vari problemi, anche non di natura aleatoria. Vediamo lapproccio generale: supponiamo che un problema si riconduca al calcolo di un integrale Sia U la variabile casuale uniforme, allora Siano U1, , Uk variabili casuali i.i.d. come U allora g(U1), , g(Uk) sono variabili casuali i.i.d. aventi come media
  • Slide 27
  • Calcolo di integrali Sia X la v.c. avente densit p e Y la v.a. Y=f(X). Il valore Supponendo di essere capaci di campionare X lintegrale I pu essere approssimato mediante il metodo Monte Carlo utilizzando lo stimatore di media campionaria per la v.a. Y=f(X) Calcolare lintegrale si prenda come X una v.a. normale standard e si usino n=10000 campioni
  • Slide 28
  • Calcolo di integrali Calcolare lintegrale si prenda come X una v.a. normale standard e si usino n=10000 campioni Il metodo fornisce la stima 8.6080 con un errore del 4% circa (avendo usato ben 10 4 campioni!)
  • Slide 29
  • Generare numeri casuali con distribuzione arbitraria Metodo di inversione Sia X una variabile aleatoria continua a valori in R e F : (0,1) R, la corrispondente funzione di ripartizione cumulativa: La variabile aleatoria U = F(X) ha una densit di probabilit uniforme nellintervallo [0,1] Quindi per campionare una variabile aleatoria X con distribuzione F basta campionare una variabile uniforme in [0,1] e poi considerare X=F -1 (U)
  • Slide 30
  • Metodo dinversione densit funzione di ripartizione Il teorema ci fornisce una regola per generare numeri con distribuzione arbitraria: se conosciamo F, prendiamo i numeri {ui} distribuiti secondo la legge uniforme e {F -1 (ui)} sono distribuiti secondo F.
  • Slide 31
  • Esempio: distribuzione esponenziale La variabile X ~exp( ) ha funzione di ripartizione Generare numeri distribuiti secondo la legge esponenziale: se i numeri {ui} sono distribuiti secondo la legge uniforme, {F -1 (ui)} hanno F come funzione di ripartizione. La variabile X pu essere ottenuta come trasformazione di una variabile uniforme
  • Slide 32
  • In MALTAB... Ora provate... data = rand(1,1000) hist(data) data = exprand(1,1,1000) hist(data) poissrndPoisson randnGaussiana