numpy 求矩阵的特征值和特征向量
文章目录
- 1. 手动计算
- 2. numpy 计算
1. 手动计算
我们手动求解矩阵的特征值和特征向量如下:
A = [ 4 − 5 2 − 3 ] → λ 1 = 2 , v 1 = 1 29 [ 5 , 2 ] T = [ 0.9847 , 0.37139 ] T \begin{equation} A=\begin{bmatrix} 4&-5\\\\ 2&-3\end{bmatrix}\to \lambda_1=2,v_1=\frac{1}{\sqrt{29}}[5,2]^T=[0.9847,0.37139]^T \end{equation} A= 42−5−3 →λ1=2,v1=291[5,2]T=[0.9847,0.37139]T
A = [ 4 − 5 2 − 3 ] → λ 2 = − 1 , v 1 = 1 2 [ 1 , 1 ] T = [ 0.7071 , 0.7071 ] T ; \begin{equation} A=\begin{bmatrix} 4&-5\\\\ 2&-3\end{bmatrix}\to\lambda_2=-1,v_1=\frac{1}{\sqrt{2}}[1,1]^T=[0.7071,0.7071]^T; \end{equation} A= 42−5−3 →λ2=−1,v1=21[1,1]T=[0.7071,0.7071]T;
- 注意
- numpy 求得特征值和特征向量对应关系,第一个特征值2对应于特征向量第一列 [ 0.9847 , 0.37139 ] T [0.9847,0.37139]^T [0.9847,0.37139]T,第二个特征值-1,对应于特征向量中的第二列 [ 0.7071 , 0.7071 ] T [0.7071,0.7071]^T [0.7071,0.7071]T
- numpy 求得的特征向量都是进行归一化处理的,使得每个向量都是单位向量
2. numpy 计算
import numpy as npif __name__ == "__main__":mat = np.array([[4, -5], [2, -3]])eigen_value, eigen_vector = np.linalg.eig(mat)print(f"eigen_value={eigen_value}")print(f"eigen_vector={eigen_vector}")#eigen_value=[ 2. -1.]#eigen_vector=[[0.92847669 0.70710678]# [0.37139068 0.70710678]]