Metodi numerici
per catene di Markov - laboratorio
Docente:
Beatrice Meini
Lezione 1: Metodi diretti per catene di Markov finite
La function [P,pv]=creap(n) crea una matrice stocastica P e il suo vettore invariante di probabilita'. Dare un valore a n (ad esempio n=20), e costruire P e pv mediante creap. Verificare che P sia stocastica e che pv sia il vettore di probabilita'.
La function pv=pvlu(P) calcola il vettore invariante di P mediante fattorizzazione LU di I-P. Calcolare plu=pvlu(P). Osservare che, se n e' abbastanza grande, le componenti piu' piccole di plu sono negative. Calcolare l'errore assoluto e relativo componente per componente: errlu=abs(pv-plu), errlu_rel=abs(pv-plu)./pv. Che cosa si osserva? Dare il comando format long e per visualizzare tutte le cifre significative. Fare un grafico in scala semilogaritmica (con semilogy) degli errori.
La function pv=pvns(P) calcola il vettore invariante di P mediante la soluzione di un sistema non singolare. Fare le stesse prove del punto precedente.
La function pv=pvlupp(P) calcola il vettore invariante di P mediante la fattorizzazione LU con pivot parziale di Matlab. Fare le stesse prove.
Provare ora a calcolare il vettore di probabilita' mediante fattorizzazione LU calcolata con aggiustamento diagonale, implementata dalla function pv=pvgth(P). Fare le stesse prove. Come sono gli errori relativi?
Fare gli stessi esperimenti applicati a una matrice stocastica PP ottenuta permutando righe e colonne di P in modo random. Questo si ottiene con i comandi ord = randperm(n); PP = P(ord,ord); pvP = pv(ord). Cosa si osserva?
La function [P,pv]=creaptrid(a,c,n) crea una matrice stocastica P tridiagonale con elementi sottodiagonali uguali ad a, sopradiagonali uguali a c, e con una correzione in altro a sinistra e in basso a destra. Il suo vettore invariante di probabilita' ha, a parte il fattore moltiplicativo, la componente di indice i data da r^i, dove r=c/a. Fare gli estessi esperimenti con vari valori di a, c, n.