Подтвердить что ты не робот

Вычисление собственных значений очень больших разреженных матриц в python

У меня очень большая разреженная матрица, представляющая переходный марксикс в Марковской цепочке, т.е. сумма каждой строки матрицы равна единице, и мне интересно найти первое собственное значение и соответствующий ему вектор, который меньше единицы, Я знаю, что собственные значения ограничены в разделе [-1, 1], и все они являются вещественными (не комплексными). Я пытаюсь вычислить значения с помощью функции python scipy.sparse.eigs, однако одним из параметров функций является количество собственных значений/векторов для оценки, и каждый раз, когда я увеличил количество параметров для оценки, числа собственных значений которые также выросли.
Излишне говорить, что я использую параметр which со значением 'LR', чтобы получить k наибольших собственных значений, причем k - это число значений для оценки. Кто-нибудь знает, как решить эту проблему (найти первое собственное значение меньше единицы и соответствующий ему вектор)?

4b9b3361

Ответ 1

Я согласен с @pv. Если ваша матрица S была симметричной, вы могли бы видеть ее как матрицу лапласа матрицы I - S. Число связных компонент I - S - это число нуль-собственных значений этой матрицы (т.е. Размерность пространства, связанного с собственным значением 1 в S). Вы можете проверить количество подключенных компонентов графа, матрица подобия которого I - S*S' для начала, например. с scipy.sparse.csgraph.connected_components.