Obliczam wektory własne w Matlab i Numpy, ale uzyskując różne wyniki. Miałem wrażenie, że był tylko jeden zestaw wektorów własnych dla danej matrycy, jednak oba te wyjścia wydają się poprawne.Konfliktowe wyniki wektora własnego między Matlab i Numpy
Oto mój kod Matlaba:
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 zawiera:
eig_val =
0.1092 0
0 2.6668
eig_vec zawiera:
eig_vec =
0.0896 + 0.6789i 0.0953 + 0.7225i
-0.7288 + 0.0000i 0.6848 + 0.0000i
Oto mój kod 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 zawiera:
array([ 0.10923247, 2.66682217])
eig_vec zawiera:
array([[-0.68477170+0.j , -0.72875765+0.j ],
[ 0.09530915-0.72249836j, -0.08955653+0.67889021j]])
Może ktoś wyjaśnić, dlaczego te wyjścia są różne, wydaje się, że każde dwa różne zestawy wektory własne są obracane wersje siebie. Czy jeden zestaw jest bardziej poprawny niż drugi?
wektory własne nie są unikalne: http://stackoverflow.com/a/18152804/97160, ale myślę, że zarówno MATLAB, jak i NumPy polegają na tych samych procedurach LAPACK, aby je obliczyć, więc prawdopodobnie uzyskasz podobne wyniki. – Amro
Zobacz [to starsze pytanie] (http://stackoverflow.com/questions/13041178/could-we-get-different-solutions-for-eigevectors--matrix/13041400 #14041400), aby uzyskać więcej informacji na temat - niepowtarzalność wektorów własnych (dotyczy matlab versus mathematica, ale w zasadzie jest to duplikat pytania) ... –