python scipy sparse-matrix eigenvector eigenvalue

Cálculo de valores propios de matrices dispersas muy grandes en python



scipy sparse-matrix (1)

Tengo una matriz dispersa muy grande que representa una martix de transición en una cadena de Markov, es decir, la suma de cada fila de la matriz es igual a una y estoy interesado en encontrar el primer valor propio y su vector correspondiente que es más pequeño que uno. Sé que los valores propios están limitados en la sección [-1, 1] y son todos reales (no complejos).
Estoy tratando de calcular los valores utilizando la función scipy.sparse.eigs de python, sin embargo, uno de los parámetros de las funciones es el número de valores / vectores propios que se deben estimar y cada vez que aumente el número de parámetros para estimar, los números de valores propios que son exactamente uno creció también.
Huelga decir que estoy usando el parámetro which con el valor ''LR'' para obtener los k autovalores más grandes, siendo k el número de valores para estimar.
¿Alguien tiene una idea de cómo resolver este problema (encontrar el primer valor propio más pequeño que uno y su vector correspondiente)?


Estoy de acuerdo con @pv. Si su matriz S fuera simétrica, podría verla como una matriz laplaciana de la matriz I - S El número de componentes conectados de I - S es el número de valores propios cero de esta matriz (es decir, la dimensión del espacio asociado al valor propio 1 de S ). Puede verificar el número de componentes conectados del gráfico cuya matriz de similitud es I - S*S'' para comenzar, por ejemplo, con scipy.sparse.csgraph.connected_components .