Python - Как linalg.eigsh может найти * все * собственные векторы? - PullRequest
0 голосов
/ 08 октября 2018

Я использую пример кода на странице документации для 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, была обусловлена ​​только нахождениемподмножество собственных векторов.

Так как же вернуть все собственные векторы?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Это не так;vecs - это матрица 13 x 6.Собственный вектор n:

vecs[:, n]
0 голосов
/ 08 октября 2018

Вы неправильно интерпретируете результаты.Собственные векторы - это столбцы из vecs, но вы считаете строки.vecs имеет шесть столбцов, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...