Ch6 非对称特征值问题的计算方法
6.1 代数基本知识与概念
6.1.1 矩阵概念与性质
特征值、特征多项式,谱集
特征值:A∈Cn×n,存在λ∈C, s.t. Ax=λx(x=0).
特征多项式:PA(λ)=det(λI−A)=(λ−λ1)n1⋯(λ−λr)nr,其中 n1+⋯+nr=n,λ1,⋯,λr 互异,且称 λA={λ1,⋯,λr} 为 A 的谱集.
ni称为λi的代数重数(简称重数),而mi=n−rank(λiI−A)称为λi的几何重数(有mi≤ni).
ni=1的λi称为单特征值,否则称为重特征值.如果ni=mi,则称λi为A的一个半单特征值.
显然,单特征值必是半单特征值.
如果A所有特征值半单,则称A是非亏损的.
A 非亏损 ⟺ A 有 n 个线性无关的特征向量(即 A 可对角化).
相似(变换)
- 相似的矩阵具有相同的特征值;
- A与B相似:B=P−1AP. 且若 x 为 A 的特征向量,则 Px 是 B 的特征向量.
6.1.2 相关定理
Jordan分解定理
设 A∈Cn×n,有 r 个互不相同的特征值 {λ1,⋯,λr},其重数分别为 n(λ1),⋯,n(λr),则必存在一个非奇异矩阵 P∈Cn×n,使得
P−1AP=J(λ1)J(λ2)⋱J(λr)
其中 J(λi)=diag(J1(λi),⋯,Jki(λi))∈Cn(λi)×n(λi),i=1,⋯,r,其中
Jj(λi)=λi1λi⋱⋱1λi∈Cnj(λi)×nj(λi),j=1,⋯,ki
n1(λi)+⋯+nki(λi)=n(λi),i=1,⋯,r;
上述定理中的矩阵 J 称为 A 的 Jordan 标准形,其中每个子矩阵 Ji(λi) 称为 Jordan 块.
An Example:
J=22123,
则 A 共有2个互不相同的特征值 λ1=2,λ2=3,其重数分别为 3,1. 且 J(λ1)=2212,J(λ2)=[3].
Schur分解定理
设 A∈Cn×n,则存在酉矩阵 U∈Cn×n,使得 UHAU=T,其中 T 是上三角阵.
且适当选取 U,可以使 T 的对角元按任意指定序列排序.
实数域上的Schur分解定理
设 A∈Rn×n,则存在正交阵 Q∈Rn×n,使得 QHAQ=R11R12⋱⋯R1m⋮Rmm,其中 Rii 或是一个实数,或是一个具有一对共轭复数特征值的二阶方阵.称上述形式为 A 的实 Schur 标准形.
6.2 幂法
幂法是计算一个矩阵的模最大特征值和对应的特征向量的一种迭代方法.
6.2.1 幂法的思想
- 设 A∈Cn×n 可对角化,有如下分解
A=XΛX−1
其中 Λ=diag(λ1,⋯,λn),X=[x1,⋯,xn]∈Cn×n 非奇异,再假定
∣λ1∣>∣λ2∣≥⋯≥∣λn∣.
- 现任取 u0∈Cn,由于 X 的列向量构成 Cn 的一组基,故
u0=α1x1+⋯+αnxn,αi∈C
这样,我们有
Aku0===j=1∑nαjAkxjj=1∑nαjλjkxjλ1k[α1x1+j=2∑nαj(λ1λj)kxj]
令 k→+∞,有 λ1kAku0→α1x1. 这表明当 α1=0 且 k 充分大时,向量 uk=λ1kAku0 是 A 的一个很好的近似特征向量.
6.2.2 实用的幂法
6.2.1中幂法的弊端:
解决思路:
实用的迭代格式:
yk=Auk−1μk=ζj(k),ζj(k)是 yk 的模最大分量uk=yk/μk
其中 u0∈Cn 是可以任意给定的初始向量.通常要求 ∣∣u0∣∣∞=1.
- 若 λ1 是半单的(即几何重数与代数重数相等)且模最大,取 u0:u0 在 λ1 的特征子空间投影不等于0,那么按上述实用迭代格式得到的数值序列 {μk} 收敛到模最大特征值 λ1,向量序列 {uk} 收敛到其对应的特征向量.
6.2.3 幂法拓展
幂法一般只能用来求模最大特征值及其对应的特征向量,如果想求第二大、第i大的特征值,则需要“降阶”:
在已知 λ1 及其对应的特征向量的情况下,寻找酉矩阵 P,将 A 化为如下形式(利用 Ax1=λ1x1 与 Px1=αe1 两个等式):
PHAP=[λ1∗B]
继续对矩阵B做幂法即可.
6.3 计算矩阵特征值的QR方法
6.3.1 QR迭代:QR分解+反分解
回顾QR分解:见3.4.1
基本迭代与收敛性
- 令 A0=A,作分解 A0=Q1R1,令 A1=R1Q1,则 A0 与 A1 正交相似(A1=Q1TQ1R1Q1=Q1TA0Q1);
- 作分解 A1=Q2R2,令 A2=R2Q2;
- ⋯
- 作分解 Am=Qm+1Rm+1,令 Am+1=Rm+1Qm+1;
得到矩阵序列 {Am}:两两正交相似——也就是说,我们实施QR迭代其实是在对A一步步做正交相似变换.
令 Q^m=Q1⋯Qm,R^m=Rm⋯R1,则有 Q^mR^m=Am.
上述的 Am=[αij(m)] 的对角线以下的元素趋于0,而对角元趋于 A 的各个特征值(特征值由大到小从左上方开始排列).
不难发现,上述的 Am 最终会逼近于 A 的实Schur标准形.
故我们的目的即是计算 A 的实Schur标准形!!!
6.3.2 计算A的特征值的实现
实际计算时,为了减少每次迭代所需的运算量,总是将原矩阵A经相似变换约化为一个准上三角阵,再对约化后的矩阵进行 QR 迭代.
- 上 Hessenberg 矩阵定义:
H=h11h21h12h22h32h13h23h33⋱⋯⋯⋯⋱⋱h1,n−1h2,n−1h3,n−1⋮⋱hn,n−1h1nh2nh3n⋮⋮hnn
上 Hessenberg 分解:
目的:Find an orthogonal Q0 such that Q0TAQ0=H.
现令 Q0=H1H2⋯Hn−2,其中 Hi 为 Householder 矩阵.
Q0 的具体计算:
- 首先 H1A 会使得 A 的第一列只剩 a11=0.但需要注意的是在左乘操作结束后,我们需要进行右乘,即 H1AH1,这一步操作会使 A 的第一列0元素变为非零元素——这不是我们想要的——我们想保留尽可能多的零元素.
- 所以我们取 H1=[100H1^] ,则 H1AH1=[a11H1^a1a2TH1^H1^A22H1^],其中 a1T=[a21,a31,⋯,an1],a2T=[a12,a13,⋯,a1n].
- 最佳方案是取 H1^, s.t. H1^a1=pe1,p∈R,其实就是使 H1AH1 的第一列只有前两个非零元素.
- 对 H^1A22H^1 做类似的操作.
上Hessenberg的QR迭代
- 因为 H 是一个准上三角阵(零元比较多),所以它的 QR 分解主要依靠 Givens 变换——也就是说,它的 QR 分解中的 Q 特指 Givens 变换:
- 对于一般的 n 阶上 Hessenberg 矩阵,我们可以确定 n-1 个平面旋转变换 G12,G23,⋯,Gn−1,n,使得 Gn−1,n⋯G12H=R(R是上三角阵).
- 则 QR 分解中 Q=(Gn−1,n⋯G12)T;
- 计算 H^=RQ.
- 至此 H 的一次 QR 迭代结束.
总结
- 对 A 作上 Hessenberg 分解,Q0TAQ0=H,其中 Q0=H1H2⋯Hn−2;
- 令 H0=H,对 H0 进行 QR 迭代——利用 Givens 变换.
6.4 带原点位移方法
Hm−μmI=QmRmHm+1=RmQm+μmI
m 从0开始,H0 参见6.3.2.
- 讨论位移 μm 的选取:μm=hnn(m),也就是第 m 次迭代中 Hm 的右下角元素.
- 通过原点位移,特征值的渐近收敛速度从线性收敛加速而变成二次收敛.
6.5 双重步位移QR方法
6.4中的带原点位移的 QR 迭代存在严重的缺点:若 A 具有复共轭特征值,则实位移一般不能起到加速作用.
为了克服这一缺点,我们使用双重步位移的QR迭代,其基本思想是将两步带原点位移的QR迭代合并为一步,避免复数运算.
6.5.1 理论分析
- 考虑 Hk 的尾部 2×2 子矩阵
Zk=[hmm(k)hnm(k)hmn(k)hnn(k)],m=n−1
有一对复共轭特征值 μ1,μ2,此时我们就不能期望 hnn(k) 能收敛到 A 的某个特征值.我们想取 μ1 或 μ2 作为位移,但是这就引入了复数运算.
- 为了避免复数运算,我们用 μ1&μ2 连续作两次位移:
H−μ1I=U1R1,H1−μ2I=U2R2,H1=R1U1+μ1I,H2=R2U2+μ2I.
这里的 H 即是 Hk.对上面的迭代进行一些简单的运算——计算 H2:
- 令 M=H2−sH+tI,其中 s=μ1+μ2=hmm(k)+hnn(k)∈R,t=μ1μ2=det(Zk)∈R.
- 计算的QR分解:M=(H−μ1I)(H−μ2I)⟹M=QR,Q=U1U2,R=R1R2.
- 计算 H2=QTHQ.
6.5.2 Francis 双重步位移 QR 迭代算法
上述理论分析可行,但是在第一步——计算 M——时就出现了 O(n3) 的计算量,这是不能接受的.
我们的目标是 H→H2,O(n2):
- 首先,由 M=QR 与 R 是上三角阵可知:M 与 Q 的第一列是共线的(其实Q的第一列即是M的第一列单位化而得).又由 M=H2−sH+tI,计算得出 Me1=(ξ1,ξ2,ξ3,0,⋯,0)T,其中
ξ1ξ2ξ3=(h11(k))2+h12(k)h21(k)−sh11(k)+t,=h21(k)h11(k)+h22(k)h21(k)−sh21(k),=h32(k)h21(k).
- 其次,如果有 Householder 变换 P0 将 Me1 变换为 αe1,则 P0 的第一列与 Me1 共线,从而 P0 第一列就可作为 Q 的第一列,即 P0e1=Qe1.由 Householder 变换的求解可知,P0=diag(P0^,In−3),其中
P0^=I3−βvvT,α=(ξ12+ξ22+ξ32)21,v=ξ1−αξ2ξ3,β=vTv2.
令 B=P0HP0→
- 约化 B 为上 Hessenberg 矩阵:
- Pk=diag(Ik,Pk^,In−k−3),k=1,⋯,n−3,其中 Pk^ 是三阶 Householder 变换;
- Pn−2=diag(In−2,P^n−2),其中 P^n−2 是二阶 Householder 变换;
- 则 P≜P0P1⋯Pn−3Pn−2,最后得出 H2^=PTHP.
- 我们想要的是 H2=QTHQ:由于 H 为不可约上 Hessenberg 矩阵且 P、Q 第一列相同,则 H2^=H2.
6.6 隐式 QR 算法