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