喜欢这篇文章吗?喜欢的话去看博主的置顶博客,即可依据分类找到此文章的原版得到更好的体验,
图片及代码显示的问题,笔者深感抱歉,想要更好的体验去原博文即可。
title: 矩阵的特征值与特征向量
mathjax: true
date: 2020-02-26 16:31:55
categories: [mathematics,matrix,矩阵的特征值与特征向量]
tags: [mathematics,matrix]
keywords: [mathematics,matrix]
建议先看这个
{% post_link 矩阵分解%}
矩阵特征值的与特征向量
若矩阵 A A A,列向量 X X X,常数 λ \lambda λ满足 A X = λ X AX=\lambda X AX=λX,则我们称 λ \lambda λ是 A A A的一个特征值, X X X是 A A A的一个特征向量
解析解
一元高次方程 d e t ( X − λ E ) = 0 det(X-\lambda E)=0 det(X−λE)=0,这在X的阶很高的时候,几乎是无用的。
近似解
因为我们难以得到矩阵特征值的解析解,所以这里使用近似解来逼近。
Given变换
Given变换是一种旋转变换,他的变换矩阵与单位矩阵相比只有四个元素不一样,变换矩阵如下
$$
\begin{aligned}
\left[\begin{matrix}
&1\
&&.\
&&&.\
&&&&.\
&&&&&\cos\theta &&&&\sin\theta\
&&&&&&.\
&&&&&&&.\
&&&&&&&&.\
&&&&&-\sin\theta &&&&\cos\theta\
&&&&&&&&&&.&\
&&&&&&&&&&&.&\
&&&&&&&&&&&&.&\
&&&&&&&&&&&&&1&\
\end{matrix}\right]
\end{aligned}
$$
不难证明这个矩阵是正交矩阵,不难证明左乘这个变换只会改变两行,右乘这个矩阵只会改变两列
Hessenberg矩阵
次对角线下方元素为0
[
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
]
\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}
⎣⎢⎢⎢⎢⎡xxxxxxxxxxxxxxxxxxx⎦⎥⎥⎥⎥⎤
任何一个方阵都有上海森伯格形式的相似矩阵,
幂法
幂法是最基础的算法,我们先来描述一下这个过程
我们随机选择一个初始列向量
Y
Y
Y,假设它能够被矩阵A的特征向量线性组合出来,则
lim
N
→
∞
A
N
Y
=
一
个
特
征
向
量
\begin{aligned}\lim_{N\to\infty}A^NY\end{aligned}=一个特征向量
N→∞limANY=一个特征向量
这里使用快速幂算法就亏大了快速幂迭代一次
O
(
N
3
)
O(N^3)
O(N3),普通迭代一次
O
(
N
2
)
O(N^2)
O(N2),所以普通迭代就行了,
证明: 对于大部分
Y
Y
Y来说,如果它能够被组合出来即
Y
=
k
1
X
1
+
K
2
X
2
+
K
3
X
3
+
.
.
.
Y=k_1X_1+K_2X_2+K_3X_3+...
Y=k1X1+K2X2+K3X3+...,且满足特征值满足条件
λ
1
>
λ
2
>
.
.
.
\lambda_1>\lambda_2>...
λ1>λ2>...
则有
A
N
Y
=
k
1
A
N
X
1
+
k
2
A
N
X
2
+
.
.
.
=
k
1
λ
1
N
X
1
+
k
2
λ
2
N
X
2
+
.
.
.
A^NY=k_1A^NX_1+k_2A^NX_2+...=k_1\lambda_1^NX_1+k_2\lambda_2^NX_2+...
ANY=k1ANX1+k2ANX2+...=k1λ1NX1+k2λ2NX2+...,所以这个极限是显然趋近于特征值绝对值最大的特征向量的。
所以这个算法在大多数情况下都能成功。考虑到幂法会增长很快,我们可以在迭代过程中单位化。
反幂法
求逆以后在用幂法,我们会得到特征值最小的特征向量,这很容易证明。
jacobi迭代法
只能处理对称矩阵
这个算法使用相似矩阵,每次使用一个Given变换,让绝对值最大的非对角线上的元素变为0,这导致了整体势能的下降,最终相似矩阵的非对角线元素会趋近于0,Given变换是一个稀疏矩阵,他和单位矩阵只有四个元素不同,是一种旋转矩阵,加上相似变换以后,这导致他只会改变两行和两列,最终我们就得出了特征值。
QR迭代法
还是先说做法,再给出证明,根据QR分解我们有
A
=
Q
R
A=QR
A=QR,构造
A
2
=
R
Q
=
Q
−
1
A
Q
A_2 = RQ = Q^{-1}AQ
A2=RQ=Q−1AQ,我们就不难发现
A
2
A_2
A2与
A
A
A相似,我们用同样的办法,从
A
1
A_1
A1得到
A
2
A_2
A2,从
A
2
A_2
A2得到
A
3
A_3
A3…不断的迭代下去,最终
A
i
A_i
Ai对角线一下的元素会趋近于0,这是特征值就算出来了.QR算法的本质其实还是幂法,
我们考虑幂法的过程,他可以求出一个特征向量,如果我们在幂法结束以后,得到了
X
1
X_1
X1,然后我们再随机选择一个
Y
2
Y_2
Y2,把
Y
2
Y_2
Y2中
X
1
X_1
X1的分量去掉,然后进行幂法迭代,这时候我们会得到特征值第二大的特征向量,因为
Y
2
Y_2
Y2再去掉
X
1
X_1
X1方向上的分量以后,已经不再包含
X
1
X_1
X1方向上的值了,也即
k
1
k_1
k1为0,这时候幂法得到的极限是第二大特征向量,随后我们可以顺序得到第三大、第四大、、、,这样太蠢了,我们考虑一次性把他们呢求出来,我们一次性就选择n个随机向量构成矩阵Z,然后用A左乘得到AZ,然后对AZ
使用斯密斯正交化得到
Z
2
Z_2
Z2,可以证明
Z
n
Z_n
Zn将趋近于A的所有特征向量构成的矩阵。证明很多细节地方没有处理,这也就是为什么QR算法会失败的原因,但QR算法在大多数情况下是能够成功的,
即我们得到了算法迭代
Y
i
=
G
r
a
m
S
c
h
m
i
d
t
(
A
Y
i
−
1
)
Y_i=GramSchmidt(AY_{i-1})
Yi=GramSchmidt(AYi−1),这个算法叫归一化算法,和上面那个算法优点小区别,但本质上是一样的,只是标记不一样而已。
如果我们能够提前把矩阵变为上海森伯格形式,QR算法的速度将大大提高。