Najlepszy sposób obliczenia podstawowej macierzy absorbującego łańcucha Markowa?

Mam bardzo duży absorbujący łańcuch Markowa (skale do rozmiaru problemu - od 10 stanów do milionów), który jest bardzo rzadki (większość stanów może reagować tylko na 4 lub 5 innych stanów).

Muszę obliczyć jeden wiersz podstawowej macierzy tego łańcucha (średnia częstotliwość każdego stanu przy jednym stanie początkowym).

Zwykle robiłbym to obliczając(I - Q)^(-1), ale nie udało mi się znaleźć dobrej biblioteki, która implementuje rzadki algorytm odwrotnej macierzy! Widziałem kilka artykułów na ten temat, większość z nich P.h.D. poziom pracy.

Większość moich wyników Google wskazuje na posty mówiące o tym, że nie należy używać macierzy odwrotnej podczas rozwiązywania liniowych (lub nieliniowych) układów równań ... Nie uważam tego za szczególnie pomocne. Czy obliczenie macierzy podstawowej jest podobne do rozwiązania układu równań, a ja po prostu nie wiem, jak wyrazić to w postaci drugiego?

Stawiam więc dwa konkretne pytania:

Jaki jest najlepszy sposób obliczenia wiersza (lub wszystkich wierszy) odwrotności macierzy rzadkiej?

LUB

Jaki jest najlepszy sposób obliczenia rzędu podstawowej macierzy dużego absorbującego łańcucha Markowa?

Rozwiązanie Pythona byłoby cudowne (ponieważ mój projekt wciąż jest sprawdzianem koncepcji), ale jeśli muszę zabrudzić sobie ręce jakimś dobrym olbrzymim Fortranem lub C, to nie jest problem.

Edytuj: Właśnie zdałem sobie sprawę, że odwrotność B macierzy A można zdefiniować jako AB = I, gdzie I jest macierzą tożsamości. To może pozwolić mi użyć niektórych standardowych solverów macierzowych do obliczenia odwrotności ... Muszę uciekać, więc nie krępuj się, aby ukończyć mój kurs myśli, który, jak sądzę, może wymagać tylko naprawdę podstawowej macierzy własność...

questionAnswers(2)

yourAnswerToTheQuestion