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
[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.

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:

  1. Caricare l'esempio 1 di QBD mediante il comando load example1_QBD.mat e calcolare il drift

  2. 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.

  3. 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.