Я использую пример кода на странице документации для linalg.eigsh
, здесь :
import scipy.sparse.linalg as sp
import numpy as np
id = np.eye(13)
vals, vecs = sp.eigsh(id, k=6)
len(vals)
# 6
len(vecs)
# 13
Я прошу его для 6
собственных значений (k=6
) ион возвращает 6, но он дает мне 13 (т.е. все ) собственных векторов.
В документации, когда речь идет о k
, говорится:
Количество требуемых собственных значений и собственных векторов.k должно быть меньше N. Невозможно вычислить все собственные векторы матрицы.
И действительно, я думал, что скорость метода Ланцоша, лежащая в основе eighsh
, была обусловлена только нахождениемподмножество собственных векторов.
Так как же вернуть все собственные векторы?