私はnumpyでlinalgを使って、符号付き実数の行列の固有値と固有ベクトルを計算しています。 私はthis previous questionを読みましたが、依然として固有ベクトルの正規化を把握していません。ここで は一例であるストレートオフWikipedia:numpyでの固有ベクトルの正規化
import numpy as np
from numpy import linalg as la
a = np.matrix([[2, 1], [1, 2]], dtype=np.float)
eigh_vals, eigh_vects = np.linalg.eig(a)
print 'eigen_values='
print eigh_vals
print 'eigen_vectors='
print eigh_vects
固有値は1であり、固有ベクトル3. 我々は[1、-1]と[1、1]、私が手のスカラー倍を期待:
をeig_vals=
[ 3. 1.]
eig_vets=
[[ 0.70710678 -0.70710678]
[ 0.70710678 0.70710678]]
私は1/sqrt(2)因子がノルム= 1であることを理解していますが、それはなぜですか? 正規化を「オフ」にすることはできますか? ありがとう!
スイッチを切った場合の結果はどうでしょうか?さもなければ 'eig_vets.dot(eig_vals).dot(eig_vets.conj().T)'はあなたに正しい答えを与えません。 – percusse