MatlabとNumpyで固有ベクトルを計算していますが、異なる結果が得られます。私は、与えられた行列に対してただ1組の固有ベクトルが存在していたという印象を受けていましたが、これらの出力の両方が有効であるように見えます。ここでMatlabとNumpyの間の固有ベクトルの出力が矛盾します
は私MathWorks社のMATLABコードです:
m = [ 1.4675 + 0.0000i 0.1669 + 1.2654i;
0.1669 - 1.2654i 1.3085 + 0.0000i]
[eig_vec,eig_val] = eig(m)
eig_valは含まれています
eig_val =
0.1092 0
0 2.6668
含まeig_vec:ここ
eig_vec =
0.0896 + 0.6789i 0.0953 + 0.7225i
-0.7288 + 0.0000i 0.6848 + 0.0000i
は私のpythonのコードです:
m = np.array([[1.46753694+0.j, 0.16692111+1.26535838j],
[0.16692111-1.26535838j, 1.30851770+0.j]])
eig_val,eig_vec = linalg.eigh(m)
eig_valは含まれています
array([ 0.10923247, 2.66682217])
含まeig_vec:
array([[-0.68477170+0.j , -0.72875765+0.j ],
[ 0.09530915-0.72249836j, -0.08955653+0.67889021j]])
は、誰もがこれらの出力が異なる理由を説明することができ、固有ベクトルの2つの異なるセットが互いの回転バージョンがそれぞれのように思えます。 1つのセットは他のセットよりも正確ですか?
固有ベクトルは一意ではありません:http://stackoverflow.com/a/18152804/97160しかし、私はMATLABとNumPyの両方が同じLAPACKルーチンを使って計算するので、同様の結果が得られると思います。 – Amro
詳細については、[この古い質問](http://stackoverflow.com/questions/13041178/could-we-get-different-solutions-for-eigenvectors-from-a-matrix/13041400#13041400)を参照してください。固有ベクトルの一意性(これはmatlabとmathematicaの関係になりますが、本質的に重複した質問です)... –