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
.