矩阵的特征值与特征向量

252 阅读3分钟

转载自 link

建议先看这个

{% post_link 矩阵分解%}

矩阵特征值的与特征向量

若矩阵AA,列向量XX,常数λ\lambda满足AX=λXAX=\lambda X,则我们称λ\lambdaAA的一个特征值,XXAA的一个特征向量

解析解

一元高次方程det(XλE)=0det(X-\lambda E)=0,这在X的阶很高的时候,几乎是无用的。

近似解

因为我们难以得到矩阵特征值的解析解,所以这里使用近似解来逼近。

Given变换

Given变换是一种旋转变换,他的变换矩阵与单位矩阵相比只有四个元素不一样,变换矩阵如下

[1...cosθsinθ...sinθcosθ...1]\begin{aligned} \left[\begin{matrix} &1\\ &&.\\ &&&.\\ &&&&.\\ &&&&&\cos\theta &&&&\sin\theta\\ &&&&&&.\\ &&&&&&&.\\ &&&&&&&&.\\ &&&&&-\sin\theta &&&&\cos\theta\\ &&&&&&&&&&.&\\ &&&&&&&&&&&.&\\ &&&&&&&&&&&&.&\\ &&&&&&&&&&&&&1&\\ \end{matrix}\right] \end{aligned}

不难证明这个矩阵是正交矩阵,不难证明左乘这个变换只会改变两行,右乘这个矩阵只会改变两列

Hessenberg矩阵

次对角线下方元素为0

[xxxxxxxxxxxxxxxxxxx]\begin{aligned} \left[\begin{matrix} &x&x&x&x&x\\ &x&x&x&x&x\\ &&x&x&x&x\\ &&&x&x&x\\ &&&&x&x\\ \end{matrix}\right] \end{aligned}

任何一个方阵都有上海森伯格形式的相似矩阵,

幂法

幂法是最基础的算法,我们先来描述一下这个过程 我们随机选择一个初始列向量YY,假设它能够被矩阵A的特征向量线性组合出来,则limNANY=一个特征向量\begin{aligned}\lim_{N\to\infty}A^NY\end{aligned}=一个特征向量 这里使用快速幂算法就亏大了快速幂迭代一次O(N3)O(N^3),普通迭代一次O(N2)O(N^2),所以普通迭代就行了, 证明: 对于大部分YY来说,如果它能够被组合出来即Y=k1X1+K2X2+K3X3+...Y=k_1X_1+K_2X_2+K_3X_3+...,且满足特征值满足条件λ1>λ2>...\lambda_1>\lambda_2>... 则有ANY=k1ANX1+k2ANX2+...=k1λ1NX1+k2λ2NX2+...A^NY=k_1A^NX_1+k_2A^NX_2+...=k_1\lambda_1^NX_1+k_2\lambda_2^NX_2+...,所以这个极限是显然趋近于特征值绝对值最大的特征向量的。 所以这个算法在大多数情况下都能成功。考虑到幂法会增长很快,我们可以在迭代过程中单位化。

反幂法

求逆以后在用幂法,我们会得到特征值最小的特征向量,这很容易证明。

jacobi迭代法

只能处理对称矩阵 这个算法使用相似矩阵,每次使用一个Given变换,让绝对值最大的非对角线上的元素变为0,这导致了整体势能的下降,最终相似矩阵的非对角线元素会趋近于0,Given变换是一个稀疏矩阵,他和单位矩阵只有四个元素不同,是一种旋转矩阵,加上相似变换以后,这导致他只会改变两行和两列,最终我们就得出了特征值。

QR迭代法

还是先说做法,再给出证明,根据QR分解我们有A=QRA=QR,构造A2=RQ=Q1AQA_2 = RQ = Q^{-1}AQ,我们就不难发现A2A_2AA相似,我们用同样的办法,从A1A_1得到A2A_2,从A2A_2得到A3A_3...不断的迭代下去,最终AiA_i对角线一下的元素会趋近于0,这是特征值就算出来了.QR算法的本质其实还是幂法, 我们考虑幂法的过程,他可以求出一个特征向量,如果我们在幂法结束以后,得到了X1X_1,然后我们再随机选择一个Y2Y_2,把Y2Y_2X1X_1的分量去掉,然后进行幂法迭代,这时候我们会得到特征值第二大的特征向量,因为Y2Y_2再去掉X1X_1方向上的分量以后,已经不再包含X1X_1方向上的值了,也即k1k_1为0,这时候幂法得到的极限是第二大特征向量,随后我们可以顺序得到第三大、第四大、、、,这样太蠢了,我们考虑一次性把他们呢求出来,我们一次性就选择n个随机向量构成矩阵Z,然后用A左乘得到AZ,然后对AZ 使用斯密斯正交化得到Z2Z_2,可以证明ZnZ_n将趋近于A的所有特征向量构成的矩阵。证明很多细节地方没有处理,这也就是为什么QR算法会失败的原因,但QR算法在大多数情况下是能够成功的, 即我们得到了算法迭代Yi=GramSchmidt(AYi1)Y_i=GramSchmidt(AY_{i-1}),这个算法叫归一化算法,和上面那个算法优点小区别,但本质上是一样的,只是标记不一样而已。 如果我们能够提前把矩阵变为上海森伯格形式,QR算法的速度将大大提高。