Metodi numerici
per catene di Markov - laboratorio
Docente:
Beatrice Meini
Lezione 4: Catene di Markov di tipo M/G/1: iterazioni funzionali per il calcolo di G
Le functions
La function
d = drift(A) calcola il "drift" d di una
catena di Markov di tipo M/G/1, la cui parte omogenea e' definita
dalla variabile A. Se d e' negativo, la catena di Markov e' positiva
ricorrente; se d e' positivo e' transiente. I problemi "piu'
difficili" sono quelli in cui d e' vicino a zero.
I files
example1_QBD.mat,
example2_QBD.mat,
example3_QBD.mat,
example4_QBD.mat contengono la
matrice A a 3 indici che definisce la parte omogenea di vari esempi di
QBD.
La function
A=qbd(n,delta)
genera la parte omogenea A di un QBD. In input la dimensione n dei blocchi e un
paramentro delta positivo, tale che il drift e' uguale a -delta. Dunque il
problema puo' essere reso arbitrariamente "difficile" scegliendo delta
abbastanza piccolo.
Il file
example1_MG1.mat contiene la
matrice A che definisce la parte omogenea di una catena di Markov di
tipo M/G/1.
Sperimentazione:
Caricare l'esempio 1 di QBD
mediante il comando load
example1_QBD.mat e calcolare il drift
Approssimare la matrice G mediante le
tre iterazioni funzionali, scegliendo come valore iniziale la
matrice nulla (X0=zeros(5)), come
tolloranza ad esempio 1.e-8, e numero massimo di iterazioni ad
esempio 10000. Tracciare il grafico in scala semilogaritmica del
vettore dei residui: ad esempio
scrivere semilogy([1:length(vresn)],vresn,[1:length(vrest)],vrest,[1:length(vresu)],vresu),
dove vresn, vrest, vresu sono i residui ottenuti con le tre
iterazioni funzionali.
Fare lo stesso esperimento scegliendo
come valore iniziale la matrice identica
(X0=eye(5)). Cosa si osserva? Provare
anche con altri esempi e con matrici stocastiche generate
in modo random.
[G, vres] = itfun_N(A, X0, tol, maxiter)
[G, vres] = itfun_T(A, X0, tol, maxiter)
[G, vres] = itfun_U(A, X0, tol, maxiter)
approssimano la soluzione G dell'equazione matriciale mediante l'iterazione
funzionale naturale, tradizionale, e basata sulla matrice U, rispettivamente.
La variabile A e' un array a 3 indici, che contiene i coefficienti che definiscono l'equazione matriciale. La variabile X0 e' l'approssimazione iniziale. Maggiori dettagli si trovano all'interno di ciascuna function.