laboratorio di processi stocastici

22
Laboratorio di Processi Stocastici Alberto Sorrentino www.fisica.unige.it/ ~sorrentino/Teaching

Upload: marinel

Post on 25-Feb-2016

74 views

Category:

Documents


4 download

DESCRIPTION

Laboratorio di Processi Stocastici. Alberto Sorrentino. www.fisica.unige.it/~sorrentino/Teaching. A proposito di processi stocastici. IIGiovedì 3 Dicembre ore 11:15 aula PC2 (116/117) – 1° piano III SMID Venerdì 4 Dicembre ore 9:30 aula MAC (114/120) – 1° piano - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Laboratorio di Processi Stocastici

Laboratorio di Processi Stocastici

Alberto Sorrentino

www.fisica.unige.it/~sorrentino/Teaching

Page 2: Laboratorio di Processi Stocastici

II Giovedì 3 Dicembre ore 11:15 aula PC2 (116/117) – 1° piano

III SMID Venerdì 4 Dicembre ore 9:30 aula MAC (114/120) – 1° piano

III MATE Giovedì 11 Dicembre ore 11:15 aula PC2 (116/117) – 1° piano

A proposito di processi stocastici...

Page 3: Laboratorio di Processi Stocastici

Obiettivi, metodi e piano di lavoro

Obiettivi: • applicare la teoria, • imparare a smanettare, • divertirsi (...)

Metodi: • No dimostrazioni• Prima pensare poi fare; ma se proprio non capite niente, almeno fate qualcosa, che aiuta...

Piano di lavoro:• Ripasso di MATLAB• Creazione di istogrammi• Generazione di numeri casuali

• Analisi dati DNA• Simulazione processo di Poisson• Implementazione test statistici

Page 4: Laboratorio di Processi Stocastici

Parte ZeroRipasso di MATLAB

Page 5: Laboratorio di Processi Stocastici

MATLAB

(Wikipedia)

“MATLAB (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e l'analisi statistica ...

... che comprende anche l'omonimo linguaggio di programmazione ...

...  consente di manipolare matrici, visualizzare funzioni e dati, implementare algoritmi.”

Cos’è?

Perché?

1. Perché lo conosco2. Perché ”è usato da milioni di persone nell'industria, nelle università e funziona su 

diversi sistemi operativi, tra cui Windows, Mac OS, GNU/Linux e Unix”.

Page 6: Laboratorio di Processi Stocastici

Contenuto Cartella

Lista comandi passati

Finestra di comando principale

MATLAB

Page 7: Laboratorio di Processi Stocastici

MATLAB non richiede di dichiarare le variabili

2+2 a a=1 a b=1; b

Provare

MATLAB funziona come un calcolatrice MATLAB non sa chi sia “a” Per assegnare un valore ad “a” si usa “=“ Ora MATLAB sa chi è “a” Se volete assegnare un valore senza visualizzare, usate “;” Claro?

Per Credere

Come faccio a sapere cosa ho già dichiarato? Il WORKSPACE!!

Cancellare una variabile “a” non più utile: clear aSvuotare il workspace (da fare spesso per evitare casini!!): clear all

Variabili

Page 8: Laboratorio di Processi Stocastici

Vettori

Definizione “esplicita”

Vettore riga vr = [1 2 3 9 8 7]Vettore colonna vc = [1; 2; 3; 9; 8; 7]

Definizione “implicita”

Vettore riga VR = 1:3:16 (primo_valore : incremento : estremo_superiore)

Vettore colonna VC = (5:-2:-3)’ (primo_valore : incremento : estremo_superiore)’L’apice indica la trasposizione

Il k-esimo elemento del vettore “vr” si trova con vr(k)Per selezionare un sottoinsieme (sotto-vettore) di un vettorevr(indice_iniziale : indice_finale)

Page 9: Laboratorio di Processi Stocastici

Matrici

Definizione “esplicita”

Come per i vettori si va a capo con “;” M = [1 2 3 ; 4 5 6]

La i-esima riga della matrice è M( i , : )La j-esima colonna della matrice è M( : , j )Il “:” serve a selezionare un intervallo; se gli estremi non sono indicati, seleziona tutti i valori

Comandi per matrici “predefinite”

Z = zeros(5) matrice nulla (quadrata)U = ones(5) matrice di uno (quadrata)I = eye(5) matrice identica

Page 10: Laboratorio di Processi Stocastici

Operazioni con vettori e matrici

Le operazioni “naturali” di somma e sottrazione vengono eseguite con i simboli normali (+/-)

Il prodotto standard tra vettori e matrici (o tra vettori e vettori, o tra matrici e matrici) è il prodotto riga per colonna

Per moltiplicare ELEMENTO PER ELEMENTO si usa “ .* “

Verificare la differenza tra

U*IeU.*I

Page 11: Laboratorio di Processi Stocastici

Cicli e condizioniCiclo for

for indice = primo_valore:incremento:ultimo_valoreIstruzioni

end

If / elseif condizione1

Istruzionielseif condizione2 (opzionale)

Istruzionielse (opzionale)

Istruzioniend

Ciclo whilewhile condizione

Istruzioniend

Page 12: Laboratorio di Processi Stocastici

Condizioni

RICORDARE SEMPRE:Il segno “=“ serve per ASSEGNARE un valore a una variabile.Per CONFRONTARE una variabile con un valore (o con un’altra variabile), si usa “==“.

Esempi di condizioni valide:

A>1A==0.5A==3 && (B==5 || B==7 )

Provare ad esempio

A=1If A==1 disp (‘A vale 1’)End

Page 13: Laboratorio di Processi Stocastici

ScriptUno script è un file di testo che MATLAB interpreta come una sequenza di comandi.

File New M-File

N = 10;for i = 1:N v(i) = i^2end

Salvare il file con script_prova.m

Dalla command window, lanciare script_prova

Esiste la variabile i ???

FunctionsFunzione: file di testo contenente un’intestazione

File New M-File

function v = funzione_prova(N)

for i = 1:N v(i) = i^2end

Salvare il file con funzione_prova.m

Dalla command window, lanciare funzione_prova(10)

Esiste la variabile i ???

Page 14: Laboratorio di Processi Stocastici

Visualizzazione - plot

plot( x )plot( y )

plot( x, y )

plot( x, y, ’ r ’ )

plot( x, y, ’ . ’ )

Mette in ascissa l’indice della componente del vettore, in ordinata il valore della componente

Mette in ascissa i valori del vettore “x”, in ordinata i valori del vettore “y”; “x” e “y” devono essere lunghi uguali!!

Rosso tratteggiato

Punti

figure Crea una figura vuota

hold on Per mettere più oggetti nella stessa figura

Definiamo due vettorix = -10:10y = x.^2

Page 15: Laboratorio di Processi Stocastici

Visualizzazione – altri comandi

D = load(‘dato_per_plot.dat’);size(D)

figurebar(D)

figureimage(D)

figurecontour(D)

figurequiver(D(:,1), D(:,2), D(:,3), D(:,4))

www.fisica.unige.it/~sorrentino/Teaching

Page 16: Laboratorio di Processi Stocastici

Panico...

Non ricordate l’utilizzo di un comando?

help comando

Non sapete come fare qualcosa? Volete saperne di più?

helpwin

Page 17: Laboratorio di Processi Stocastici

Primo esercizio: creare l’istogramma

di un vettore

Caricare il vettore dei dati nella variabile “data”:

data = load(‘dato_per_istogramma.dat’);size(data)

Osserviamo i dati

plot(data)

plot(data, ones(size(data)) , ’ . ’)

www.fisica.unige.it/~sorrentino/Teaching

Page 18: Laboratorio di Processi Stocastici

Algoritmo istogramma

Scelta degli estremi e della larghezza intervallo

INF SUPDELTA

Contiamo quanti elementi del vettore cadono in ogni intervallo: creiamo un vettore il cui valore i-esimo rappresenti il numero di conteggi nell’i-esimo intervallo

Page 19: Laboratorio di Processi Stocastici

Algoritmo istogramma (semplice)

Per ogni elemento del vettore data(i)

Per ogni intervallo

Se data(i) è compreso nei valori dell’intervallo

Incrementare il contatore relativo a quell’intervallo

INF SUPDELTA

Il j-esimo intervallo ha come estremi INF+(j-1)*DELTA e INF+j*DELTA

Non esistono domande stupide. Esistono solo risposte stupide.

Page 20: Laboratorio di Processi Stocastici

Algoritmo istogramma (semplice)INF = -4;SUP = 4;DELTA = 0.4; NUM_INT = (SUP-INF)/DELTA; % numero di intervallicontatore = 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)<INF+j*DELTA

contatore(j) = contatore(j)+1;end

endend

VALORI = INF+DELTA/2 : DELTA : SUP-DELTA/2figurebar(VALORI, contatore)

Page 21: Laboratorio di Processi Stocastici

Algoritmo istogramma (efficiente)

L’algoritmo appena scritto fa un ciclo di troppo...INF SUP

1 2 k

Osserviamo che il singolo valore data(i)

INF < data(i) < SUP

0 < data(i)-INF < SUP-INF=DELTA*NUM_INT

0 < (data(i)-INF)/DELTA < NUM_INT Non esistono domande stupide. Esistono solo risposte stupide.

Page 22: Laboratorio di Processi Stocastici

Algoritmo istogramma (efficiente)

INF = -4;SUP = 4;DELTA = 0.4; NUM_INT = (SUP-INF)/DELTA; % numero di intervallicontatore = zeros(1,NUM_INT) % inizializziamo il contatore;

for i = 1:size(data,2) % per ogni datoj = ceil((data(i)-INF)/DELTA);contatore(j) = contatore(j) + 1;

end

VALORI = INF+DELTA/2 : DELTA : SUP-DELTA/2figurebar(VALORI, contatore)