проблема в получении несортированных собственных значений - PullRequest
0 голосов
/ 26 мая 2019

Я хочу извлечь линейно независимые выборки из матрицы. Для которого я хочу использовать собственные значения. Но проблема в том, что функции на основе numpy / scipy дают отсортированный список собственных значений. Через который я теряю информацию о том, какое собственное значение соответствует какому вектору строки исходной матрицы, чтобы аккуратно отбросить их.

Я пытался создать свой собственный код для вычисления собственных значений как:

   numpy.linalg.solve(numpy.linalg.det(I,A)) 

где A - исходная матрица, а I - тождество. Но это дает ошибку и неверно. Каким образом я могу решить эту проблему?

1 Ответ

1 голос
/ 26 мая 2019

Они не дают отсортированные списки по умолчанию, попробуйте, например,

import numpy as np
from numpy import linalg as LA
A = np.array([[1,2,3],[3,2,1],[1,0,-1]])
w, v = LA.eig(A)
print(w)
    [  4.31662479e+00  -2.31662479e+00   3.43699053e-17]
print(v)
    [[ 0.58428153  0.73595785  0.40824829]
     [ 0.80407569 -0.38198836 -0.81649658]
     [ 0.10989708 -0.55897311  0.40824829]]

Собственное значение w [0] соответствует 0-му столбцу переменной v. Собственное значение w [1] для столбца 1 .... Для извлечения вектора i-го столбца просто используйте

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