洪山网站建设公司/广告竞价排名
特征值很复杂,除了普通的特征向量外,还有左特征向量和广义特征向量。先说说比较容易的左特征向量吧。它是这样定义的,AAA是一个矩阵,λ\lambdaλ是它的一个特征值,下面的向量yyy就是矩阵关于特征值的左特征向量left eigenvector:
yHA=λyHy^HA=\lambda y^H yHA=λyH
以这个矩阵为例子:
(200110112)\begin{pmatrix}2 & 0 & 0\\ 1 & 1 & 0\\ 1 & 1 & 2\\ \end{pmatrix} 211011002
它的特征多项式是(λ−2)2(λ−1)(\lambda - 2)^2(\lambda - 1)(λ−2)2(λ−1),所以特征值是2,2,12,2,12,2,1。以111这个特征值为例子,求它的左特征向量:
yH(200110112)=yHy^H\begin{pmatrix}2 & 0 & 0\\ 1 & 1 & 0\\ 1 & 1 & 2\\ \end{pmatrix}=y^H yH211011002=yH
这就是解方程了:
(y1y2y3)(200110112)=(y1y2y3)\begin{pmatrix} y_1 & y_2 & y_3 \end{pmatrix} \begin{pmatrix}2 & 0 & 0\\ 1 & 1 & 0\\ 1 & 1 & 2\\ \end{pmatrix}=\begin{pmatrix} y_1 & y_2 & y_3 \end{pmatrix}\\ (y1y2y3)211011002=(y1y2y3)
其实这个方程可以改写为:
(211011002)y=yy=(−110)\begin{pmatrix}2 & 1 & 1\\ 0 & 1 & 1\\ 0 & 0 & 2\\ \end{pmatrix}y=y\\ y=\begin{pmatrix} -1\\ 1\\ 0 \end{pmatrix} 200110112y=yy=−110
所以A的左特征向量其实就是AHA^HAH的特征向量。所以求左特征向量的python代码也比较容易:
# 特征向量def eigen_vector(self, eigen_value):n = len(self.__vectors)a = Matrix(Matrix.unit_matrix(n)) * eigen_valuereturn (self-a).non_homogeneous_solution([0] * n)[1:]# 左特征向量def left_eigen_vector(self, eigen_value):return self.transpose_matrix().eigen_vector(eigen_value)