Ich berechne Eigenvektoren in Matlab und Numpy, aber erziele unterschiedliche Ergebnisse. Ich hatte den Eindruck, dass es für eine gegebene Matrix nur eine Menge von Eigenvektoren gab, jedoch scheinen beide Ausgaben gültig zu sein.Widersprüchliche Eigenvektorausgaben zwischen Matlab und Numpy
Hier ist mein Matlab-Code:
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 enthält:
eig_val =
0.1092 0
0 2.6668
eig_vec enthält:
eig_vec =
0.0896 + 0.6789i 0.0953 + 0.7225i
-0.7288 + 0.0000i 0.6848 + 0.0000i
Hier meine Python-Code ist:
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 enthält:
array([ 0.10923247, 2.66682217])
eig_vec enthält:
array([[-0.68477170+0.j , -0.72875765+0.j ],
[ 0.09530915-0.72249836j, -0.08955653+0.67889021j]])
Kann mir jemand erklären, warum diese Ausgänge unterschiedlich sind, so scheint es, jeder wie die zwei verschiedene Sätze von Eigenvektoren sind gedrehten Versionen voneinander. Ist der eine Satz richtiger der andere?
Eigenvektoren sind nicht eindeutig: http://Stackoverflow.com/a/18152804/97160, aber ich denke, sowohl MATLAB als auch NumPy verlassen sich auf die gleichen LAPACK Routinen, um sie zu berechnen, so dass Sie wahrscheinlich ähnliche Ergebnisse erhalten werden. – Amro
Siehe [diese ältere Frage] (http://stackoverflow.com/questions/13041178/could-we-get-different-solutions-for-eigenvectors-from-a-matrix/13041400#13041400) für mehr lesen auf der nicht -Einheitlichkeit der Eigenvektoren (bezieht sich auf Matlab versus Mathematica, ist aber ansonsten im Wesentlichen eine doppelte Frage) ... –