Tính toán giá trị riêng và các hàm riêng bên phải của một mảng vuông.
Tham số [Mạnh, m, m] mảnga[…, M, M] arrayMa trận mà các giá trị riêng và các hàm riêng phải sẽ được tính toán
Returnsw […, m] mảngw[…, M] arrayCác giá trị riêng, mỗi lần lặp lại theo sự đa dạng của nó. Các giá trị riêng không nhất thiết phải được đặt hàng. Mảng kết quả sẽ thuộc loại phức tạp, trừ khi phần tưởng tượng bằng không trong trường hợp nó sẽ được đúc thành một loại thực. Khi A có thật, các giá trị riêng kết quả sẽ là thật [0 phần tưởng tượng] hoặc xảy ra trong các cặp liên hợp
V […, m, m] mảng[…, M, M] arrayCác eigenvector được chuẩn hóa [đơn vị độ dài], sao cho cột v[:,i]
là eigenvector tương ứng với eigenvalue w[i]
.
Nếu tính toán eigenvalue không hội tụ.
Xem thêm
eigvals
Giá trị riêng của một mảng không đối xứng.
eigh
Eigenvalues và eigenvector của một mảng Hermitian đối xứng thực sự hoặc phức tạp [đối xứng liên hợp].
eigvalsh
Eigenvalues của một mảng Hermitian đối xứng thực sự hoặc phức tạp [đối xứng liên hợp].
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]0
Chức năng tương tự trong SCIPY cũng giải quyết vấn đề eigenvalue tổng quát.
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]1
Lựa chọn tốt nhất cho các ma trận bình thường đơn nhất và không phải là người khác.
Ghi chú
Mới trong phiên bản 1.8.0.
Các quy tắc phát sóng áp dụng, xem tài liệu
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]2 để biết chi tiết.
Điều này được thực hiện bằng cách sử dụng các thói quen Lapack
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]3 để tính toán giá trị riêng và hàm riêng của các mảng vuông chung.
Số W là một giá trị riêng của A Nếu có tồn tại một vectơ v sao cho
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]4. Do đó, các mảng a, w và v thỏa mãn các phương trình
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]5 cho \ [i \ in \ {0, ..., m-1 \} \].\[i \in \{0,...,M-1\}\].
Mảng v của các hàm riêng có thể không có thứ hạng tối đa, nghĩa là, một số cột có thể phụ thuộc tuyến tính, mặc dù lỗi vòng tròn có thể làm che khuất thực tế đó. Nếu các giá trị riêng đều khác nhau, thì về mặt lý thuyết, các hàm riêng được độc lập tuyến tính và có thể được chéo hóa bằng cách chuyển đổi độ tương tự bằng cách sử dụng V, i.e,
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]6 là đường chéo.
Đối với các ma trận bình thường không phải là người, chức năng SCIPY
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]1 được ưa thích vì ma trận V được đảm bảo là đơn nhất, điều này không phải là trường hợp khi sử dụng
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]8. Hệ số Schur tạo ra một ma trận hình tam giác trên chứ không phải là ma trận đường chéo, nhưng đối với các ma trận bình thường, chỉ cần đường chéo của ma trận hình tam giác trên, phần còn lại là lỗi Roundoff.
Cuối cùng, người ta nhấn mạnh rằng V bao gồm các hàm riêng bên phải [như ở bên phải] của a. Một vector y thỏa mãn
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]9 cho một số Z được gọi là một hàm riêng bên trái của A, và nói chung, các hàm riêng bên trái và phải của ma trận không nhất thiết phải chuyển [có lẽ là liên hợp] của nhau.
Người giới thiệu
G. Strang, Đại số tuyến tính và các ứng dụng của nó, tái bản lần 2, Orlando, FL, Academy Press, Inc., 1980, khác nhau pp.
Ví dụ
>>> from numpy import linalg as LA
[Gần như] ví dụ tầm thường với các giá trị điện tử và vectơ điện tử thực sự.
>>> w, v = LA.eig[np.diag[[1, 2, 3]]] >>> w; v array[[1., 2., 3.]] array[[[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]]
Ma trận thực sự sở hữu các giá trị điện tử và vectơ điện tử phức tạp; Lưu ý rằng các giá trị điện tử là những liên hợp phức tạp của nhau.
>>> w, v = LA.eig[np.array[[[1, -1], [1, 1]]]] >>> w; v array[[1.+1.j, 1.-1.j]] array[[[0.70710678+0.j , 0.70710678-0.j ], [0. -0.70710678j, 0. +0.70710678j]]]
Ma trận có giá trị phức tạp với các giá trị điện tử thực [nhưng các vectơ điện tử có giá trị phức tạp]; Lưu ý rằng
>>> w, v = LA.eig[np.array[[[1, -1], [1, 1]]]] >>> w; v array[[1.+1.j, 1.-1.j]] array[[[0.70710678+0.j , 0.70710678-0.j ], [0. -0.70710678j, 0. +0.70710678j]]]0, tức là, A là Hermiti.
>>> a = np.array[[[1, 1j], [-1j, 1]]] >>> w, v = LA.eig[a] >>> w; v array[[2.+0.j, 0.+0.j]] array[[[ 0. +0.70710678j, 0.70710678+0.j ], # may vary [ 0.70710678+0.j , -0. +0.70710678j]]]
Hãy cẩn thận về lỗi làm tròn!
>>> a = np.array[[[1 + 1e-9, 0], [0, 1 - 1e-9]]] >>> # Theor. e-values are 1 +/- 1e-9 >>> w, v = LA.eig[a] >>> w; v array[[1., 1.]] array[[[1., 0.], [0., 1.]]]