Ho una catena di Markov assorbente molto grande (scala alla dimensione del problema - da 10 stati a milioni) che è molto sparsa (la maggior parte degli stati può reagire solo a 4 o 5 altri stati).Il modo migliore per calcolare la matrice fondamentale di una catena Markov assorbente?
Ho bisogno di calcolare una riga della matrice fondamentale di questa catena (la frequenza media di ogni stato dato uno stato iniziale).
Normalmente, lo farei calcolando (I - Q)^(-1)
, ma non sono stato in grado di trovare una buona libreria che implementa un algoritmo inverso di matrice sparsa! Ho visto alcuni documenti su di esso, la maggior parte di loro P.h.D. livello di lavoro.
La maggior parte dei risultati di Google mi indirizza a post che parlano di come non si dovrebbe utilizzare una matrice inversa quando si risolvono i sistemi di equazioni lineari (o non lineari) ... Non lo trovo particolarmente utile. Il calcolo della matrice fondamentale è simile alla soluzione di un sistema di equazioni e semplicemente non so come esprimerne uno nella forma dell'altro?
Quindi, mi pongo due domande specifiche:
Qual è il modo migliore per calcolare una riga (o tutte le righe) della inversa di una matrice sparsa?
O
Qual è il modo migliore per calcolare una riga della matrice fondamentale di una grande catena di Markov assorbimento?
Una soluzione Python sarebbe meravigliosa (come il mio progetto è ancora attualmente una dimostrazione di concetto), ma se devo sporcarmi le mani con un buon vecchio 'Fortran o C, non è un problema.
Modifica: ho appena realizzato che l'inversa B della matrice A può essere definita come AB = I, dove I è la matrice di identità. Questo potrebbe consentirmi di usare alcuni solutori di matrice sparse standard per calcolare l'inverso ... Devo scappare, quindi sentiti libero di completare il mio pensiero, che sto iniziando a pensare potrebbe richiedere solo una matrice davvero elementare proprietà ...
Se si desidera una soluzione di Python, si prega di etichettarlo 'python'. Esistono altri scambi di stack che potrebbero essere più o meno utili. –
Stavo lavorando su alcune cose su PGM e mi stavo chiedendo se ci fosse un modo per calcolarlo in generale - nessuna idea per una matrice sparsa però, quindi buona fortuna! – argentage