Tôi đang tính toán số nguyên tử trong Matlab và Numpy, nhưng nhận được các kết quả khác nhau. Tôi đã được ấn tượng rằng chỉ có một tập hợp các eigenvectors cho một ma trận nhất định, tuy nhiên cả hai kết quả đầu ra này có vẻ hợp lệ.Kết quả đầu ra vector nguyên sinh xung đột giữa Matlab và Numpy
Đây là mã của tôi 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 chứa:
eig_val =
0.1092 0
0 2.6668
eig_vec chứa:
eig_vec =
0.0896 + 0.6789i 0.0953 + 0.7225i
-0.7288 + 0.0000i 0.6848 + 0.0000i
Đây là mã python của tôi:
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 chứa:
array([ 0.10923247, 2.66682217])
chứa eig_vec:
array([[-0.68477170+0.j , -0.72875765+0.j ],
[ 0.09530915-0.72249836j, -0.08955653+0.67889021j]])
bất cứ ai có thể giải thích tại sao những kết quả đầu ra là khác nhau, nó có vẻ như mỗi hai bộ khác nhau của vector riêng là phiên bản xoay của nhau. Là một trong những thiết lập chính xác hơn mà khác?
các thành phần riêng biệt không phải là duy nhất: http://stackoverflow.com/a/18152804/97160, nhưng tôi nghĩ cả MATLAB và NumPy đều dựa vào cùng một thói quen LAPACK để tính toán chúng, vì vậy bạn có thể sẽ nhận được kết quả tương tự. – Amro
Xem [câu hỏi cũ hơn] (http://stackoverflow.com/questions/13041178/could-we-get-different-solutions-for-eigenvectors-from-a-matrix/13041400#13041400) để đọc thêm về - tính độc đáo của các eigenvectors (nó liên quan đến MATLAB so với toán học, nhưng về cơ bản là một câu hỏi trùng lặp) ... –