Я пытаюсь найти собственные/векторы для следующей матрицы:Неверные собственные значения/Вектора с Numpy
A = np.array([[1, 0, 0],
[0, 1, 0],
[1, 1, 0]])
с использованием кода:
from numpy import linalg as LA
e_vals, e_vecs = LA.eig(A)
Я получаю это как ответ:
print(e_vals)
[ 0. 1. 1.]
print(e_vecs)
[[ 0. 0.70710678 0. ]
[ 0. 0. 0.70710678]
[ 1. 0.70710678 0.70710678]]
Однако, я считаю, что следующим должен быть ответ.
[1] Real Eigenvalue = 0.00000
[1] Real Eigenvector:
0.00000
0.00000
1.00000
[2] Real Eigenvalue = 1.00000
[2] Real Eigenvector:
1.00000
0.00000
1.00000
[3] Real Eigenvalue = 1.00000
[3] Real Eigenvector:
0.00000
1.00000
1.00000
То есть, проблема собственных значений, собственных векторов говорит о том, что последующие должны справедливы:
# A * e_vecs = e_vals * e_vecs
print(A.dot(e_vecs))
[[ 0. 0.70710678 0. ]
[ 0. 0. 0.70710678]
[ 0. 0.70710678 0.70710678]]
print(e_vals.dot(e_vecs))
[ 1. 0.70710678 1.41421356]
Hi unutbu, однако не все еще проблема? Если вы умножили A на первый векторный результат [0, 0.70710678, 0], вы получили бы [0, 0.70710678, 0.70710678], который нельзя отбросить обратно в собственный вектор? –
После транспонирования 'e_vecs', собственные векторы являются * строками *' e_vecs'. Я переместил 'e_vecs', чтобы упростить итерацию по собственным векторам с помощью' zip (e_vals, e_vecs) '. – unutbu
А у меня это получилось. Спасибо! –