【NA】基于QR分解的特征值迭代法

Francis于1961-1962年利用矩阵的QR分解建立了计算矩阵特征值的QR方法,是计算中小型矩阵全部特征值的最有效方法之一。

  • 本篇的主线是第一部分介绍QR分解,第二部分介绍从QR分解引出的特征值QR迭代算法,第三部分讨论QR迭代法的收敛性,第四部分引用UTEP-Math 5330中基于Householder变换的QR分解实现,第五部分做总结以及更多讨论。

QR分解.

  • 引理】设 x ⃗ = ( x 1 , x 2 , ⋯   , x i , ⋯   , x j , ⋯   , x n ) T \vec x=(x_1,x_2,\cdots,x_i,\cdots,x_j,\cdots,x_n)^T x =(x1,x2,,xi,,xj,,xn)T,其中 x i ⋅ x j ≠ 0 x_i·x_j\neq0 xixj=0,则存在一个Givens变换矩阵 P i j P_{ij} Pij 使得 P i j x ⃗ = ( y 1 , y 2 , ⋯   , y i , ⋯   , y j , ⋯   , y n ) T P_{ij}\vec x=(y_1,y_2,\cdots,y_i,\cdots,y_j,\cdots,y_n)^T Pijx =(y1,y2,,yi,,yj,,yn)T其中 y i = x i 2 + x j 2 y_i=\sqrt{x_i^2+x_j^2} yi=xi2+xj2 y j = 0 y_j=0 yj=0
  • 上述Givens矩阵 P i j P_{ij} Pij P [ i , i ] = cos ⁡ θ   ,   P [ i , j ] = sin ⁡ θ P[i,i]=\cos\theta~,~P[i,j]=\sin\theta P[i,i]=cosθ , P[i,j]=sinθ P [ j , i ] = − sin ⁡ θ   ,   P [ j , j ] = cos ⁡ θ P[j,i]=-\sin\theta~,~P_[j,j]=\cos\theta P[j,i]=sinθ , P[j,j]=cosθ cos ⁡ θ = x i x i 2 + x j 2   ,   sin ⁡ θ = x j x i 2 + x j 2 \cos\theta=\frac{x_i}{\sqrt{x_i^2+x_j^2}}~,~\sin\theta=\frac{x_j}{\sqrt{x_i^2+x_j^2}} cosθ=xi2+xj2 xi , sinθ=xi2+xj2 xj
  • 实际操作时,可以通过对 x ⃗ \vec x x 的规范化操作来避免数值溢出。

  • 定理】对于 n n n 阶非奇异矩阵 A A A 而言,可以分解为正交阵 Q Q Q 和上三角阵 R R R 的乘积,即 A = Q R . A=QR. A=QR. 该分解是唯一的,当矩阵 R R R 中的元素满足 ∀   i ∈ [ 1 , n ] , R [ i , i ] > 0 \forall~i\in[1,n],R[i,i]>0  i[1,n],R[i,i]>0

  • 定理】对于 n n n 阶非奇异矩阵 A A A 而言,存在一系列平面旋转变换矩阵 P k ∣ k = 1 , 2 , ⋯   , n − 1 P_k|k=1,2,\cdots,n-1 Pkk=1,2,,n1,使得 P n − 1 ⋯ P 2 P 1 A = R P_{n-1}\cdots P_2P_1A=R Pn1P2P1A=R其中 R R R 是上三角阵且 r i i > 0 , i = 1 , 2 , ⋯   , n . r_{ii}>0,i=1,2,\cdots,n. rii>0,i=1,2,,n.
  • 证明】由于 A A A 非奇异,所以不可能存在全零列,因此对于第一列,可以做出一系列平面旋转变换 P 1 = ∏ P 1 k P_1=\prod P_{1k} P1=P1k使得第一列约化为 ( r 11 , 0 , ⋯   , 0 ) T (r_{11},0,\cdots,0)^T (r11,0,,0)T,同理对于后面的第 m m m列,可以做一系列平面旋转变换 P k P_k Pk 使得该列约化为 ( r 1 m , r 2 m , ⋯   , r m m , 0 , ⋯   , 0 ) T (r_{1m},r_{2m},\cdots,r_{mm},0,\cdots,0)^T (r1m,r2m,,rmm,0,,0)T,最终得到上三角阵,并引入对角阵 D = { ± 1 , ± 1 , ⋯   , ± 1 } D=\{\pm1,\pm1,\cdots,\pm1\} D={±1,±1,,±1} 使得主对角元全正。
  • 显然如果令 Q T = ∏ i = 1 n − 1 P i Q^T=\prod^{n-1}_{i=1}P_i QT=i=1n1Pi那么 Q T A = R Q^TA=R QTA=R因为 Q Q Q 是正交阵,所以 Q T = Q − 1 Q^T=Q^{-1} QT=Q1,所以有 A = ( Q T ) − 1 R = Q R A=\Big(Q^T\Big)^{-1}R=QR A=(QT)1R=QR
  • 具体地如何进行QR分解,得到正交阵 Q Q Q 和上三角阵 R R R,主流的有三种方案:Schmidt正交化、Givens变换和Householder变换,在第四部分对前两者有简介。

QR迭代算法.

  • A A A n n n 阶非奇异阵,记 A 1 = A A_1=A A1=A,对其进行QR分解得到 A 1 = Q 1 R 1 A_1=Q_1R_1 A1=Q1R1按照如下公式进行迭代: A k + 1 = R k Q k = Q k T A k Q k = Q k + 1 R k + 1 (*) A_{k+1}=R_kQ_k=Q_k^TA_kQ_k=Q_{k+1}R_{k+1}\tag{*} Ak+1=RkQk=QkTAkQk=Qk+1Rk+1(*)
  • 上述利用矩阵QR分解和递推式 ( ∗ ) (*) () 构造矩阵序列 { A k } \{A_k\} {Ak} 的过程即为QR算法

  • A k + 1 = Q k T A k Q k A_{k+1}=Q^T_{k}A_kQ_k Ak+1=QkTAkQk
  • A k + 1 = ( Q 1 Q 2 ⋯ Q k ) T A 1 ( Q 1 Q 2 ⋯ Q k ) A_{k+1}=(Q_1Q_2\cdots Q_k)^TA_1(Q_1Q_2\cdots Q_k) Ak+1=(Q1Q2Qk)TA1(Q1Q2Qk)
  • 若记 Q k ~ = ∏ i = 1 k Q i   ,   R k ~ = ∏ i = k 1 R i \tilde{Q_k}=\prod^k_{i=1}Q_i~,~\tilde{R_k}=\prod^1_{i=k}R_i Qk~=i=1kQi , Rk~=i=k1Ri那么矩阵 A k A^k Ak 的QR分解式为 A k = Q k ~ R k ~ A^k=\tilde{Q_k}\tilde{R_k} Ak=Qk~Rk~
  • 证明】数学归纳法
    ①当 k = 1 k=1 k=1 时显然有 A = Q 1 R 1 = Q 1 ~ R 1 ~ A=Q_1R_1=\tilde{Q_1}\tilde{R_1} A=Q1R1=Q1~R1~
    ②设 A k − 1 A^{k-1} Ak1 分解式为 A k − 1 = Q k − 1 ~ R k − 1 ~ A^{k-1}=\tilde{Q_{k-1}}\tilde{R_{k-1}} Ak1=Qk1~Rk1~
    ③那么 Q k ~ R k ~ = Q 1 Q 2 ⋯ Q k − 1 ( Q k R k ) R k − 1 ⋯ R 2 R 1 = Q 1 Q 2 ⋯ Q k − 1 A k R k − 1 ⋯ R 2 R 1 = Q k − 1 ~ A k R k − 1 ~ = Q k − 1 ~ ( Q k − 1 ~ ) T A Q k − 1 ~ R k − 1 ~ = A A k − 1 = A k \begin{aligned}\tilde{Q_k}\tilde{R_k} &=Q_1Q_2\cdots Q_{k-1}(Q_kR_k)R_{k-1}\cdots R_2R_1\\ &=Q_1Q_2\cdots Q_{k-1}A_kR_{k-1}\cdots R_2R_1\\ &=\tilde{Q_{k-1}}A_k\tilde{R_{k-1}}\\ &=\tilde{Q_{k-1}}\Big(\tilde{Q_{k-1}}\Big)^TA\tilde{Q_{k-1}}\tilde{R_{k-1}}\\ &=AA^{k-1}\\ &=A^k \end{aligned} Qk~Rk~=Q1Q2Qk1(QkRk)Rk1R2R1=Q1Q2Qk1AkRk1R2R1=Qk1~AkRk1~=Qk1~(Qk1~)TAQk1~Rk1~=AAk1=Ak

收敛性.

  • 对于 n n n 阶非奇异阵 A A A,若 A A A 的特征值满足 ①   ∣ λ 1 ∣ > ∣ λ 2 ∣ > ⋯ > ∣ λ n ∣ ①~|\lambda_1|>|\lambda_2|>\cdots>|\lambda_n|  λ1>λ2>>λn ②   A ②~A  A 有标准型 A = X D X − 1 A=XDX^{-1} A=XDX1,其中 D = d i a g λ 1 , λ 2 , ⋯   , λ n D=diag{\lambda_1,\lambda_2,\cdots,\lambda_n} D=diagλ1,λ2,,λn,且 X − 1 X^{-1} X1 有三角分解 X − 1 = L U X^{-1}=LU X1=LU,则由QR算法产生的矩阵序列 { A k } \{A_k\} {Ak} 有下列极限: lim ⁡ k → ∞ A k = R \lim_{k\rightarrow\infin}A_k=R klimAk=R 其中 R R R 为上三角阵,并且 r i i = λ i . r_{ii}=\lambda_i. rii=λi.
  • 证明】对于非奇异矩阵 A A A,存在可逆矩阵 X X X 使得 X − 1 A X = D X^{-1}AX=D X1AX=D,即 A = X D X − 1 A=XDX^{-1} A=XDX1,因此有 A k = X D k X − 1 (1) A^k=XD^kX^{-1}\tag{1} Ak=XDkX1(1)条件中认为 X − 1 X^{-1} X1 存在LU分解 X − 1 = L U X^{-1}=LU X1=LU,因此 ( 1 ) (1) (1) 式可写为 A k = X D k L U = X ( D k L D − k ) D k U (2) A^k=XD^kLU=X(D^kLD^{-k})D^{k}U\tag{2} Ak=XDkLU=X(DkLDk)DkU(2) ( 2 ) (2) (2) D k L D − k D^kLD^{-k} DkLDk 做加性分解,得到 D k L D − k = E + Λ k D^kLD^{-k}=E+\Lambda_k DkLDk=E+Λk其中 Λ k \Lambda_k Λk 是一个下三角阵,且其主对角元 Λ [ i , i ] = 0 \Lambda[i,i]=0 Λ[i,i]=0,非零元素表达式为 Λ [ i , j ] = L [ i , j ] ⋅ ( λ i λ j ) k   ,   i > j \Lambda[i,j]=L[i,j]·\Big(\frac{\lambda_i}{\lambda_j}\Big)^k~,~i>j Λ[i,j]=L[i,j](λjλi)k , i>j由于特征值按绝对值降序排列,因此有下面的极限存在 lim ⁡ k → ∞ Λ = 0 \lim_{k\rightarrow\infin}\Lambda=0 klimΛ=0这里的 0 0 0 代表零矩阵。由于矩阵 X X X 非奇异,对其进行QR分解,有 X = Q R X=QR X=QR至此 ( 2 ) (2) (2) 式可以写为 A k = Q R ( E + Λ k ) D k U = Q ( E + R Λ k R − 1 ) R D k U (3) A^k=QR(E+\Lambda_k)D^{k}U=Q(E+R\Lambda_kR^{-1})RD^kU\tag{3} Ak=QR(E+Λk)DkU=Q(E+RΛkR1)RDkU(3) k → ∞ k\rightarrow\infin k 时,矩阵 R ( E + Λ k ) R(E+\Lambda_k) R(E+Λk) 可逆,从而 R ( E + Λ ) R − 1 = E + R Λ k R − 1 R(E+\Lambda)R^{-1}=E+R\Lambda_kR^{-1} R(E+Λ)R1=E+RΛkR1 可逆,对其进行QR分解,有 E + R Λ k R − 1 = Q k ′ R k ′ E+R\Lambda_kR^{-1}=Q_k'R_k' E+RΛkR1=QkRk从而 ( 3 ) (3) (3) 式写为 A k = ( Q Q k ′ ) ( R k ′ R D k U ) (4) A^k=(QQ_k')(R_k'RD^kU)\tag{4} Ak=(QQk)(RkRDkU)(4)显然 ( 4 ) (4) (4) 式已经是 A A A 的QR分解,为确保唯一性,引入对角阵 D ∗ = d i a g { ± 1 , ± 1 , ⋯   , ± 1 } D^*=diag\{\pm1,\pm1,\cdots,\pm1\} D=diag{±1,±1,,±1} ( 4 ) (4) (4) 写为 A k = ( Q Q k ′ D ∗ ) ( D ∗ R k ′ R D k U ) (5) A^k=(QQ_k'D^*)(D^*R_k'RD^kU)\tag{5} Ak=(QQkD)(DRkRDkU)(5)可得 Q k ~ = Q Q k ′ D ∗ \tilde{Q_k}=QQ_k'D^* Qk~=QQkD R k ~ = D ∗ R k ′ R D k U \tilde{R_k}=D^*R_k'RD^kU Rk~=DRkRDkU因此 A k + 1 = ( Q 1 Q 2 ⋯ Q k ) T A 1 ( Q 1 Q 2 ⋯ Q k ) = ( Q k ~ ) T A Q k ~ = D ∗ ( Q k ′ ) T Q T A Q Q k ′ D ∗ (6) A_{k+1}=(Q_1Q_2\cdots Q_k)^TA_1(Q_1Q_2\cdots Q_k)=\Big(\tilde{Q_k}\Big)^TA\tilde{Q_k}=D^*\Big(Q_k'\Big)^TQ^TAQQ_k'D^*\tag{6} Ak+1=(Q1Q2Qk)TA1(Q1Q2Qk)=(Qk~)TAQk~=D(Qk)TQTAQQkD(6)因为 A = X D X − 1 , X = Q R A=XDX^{-1},X=QR A=XDX1,X=QR,所以 Q T A Q = R D R − 1 Q^TAQ=RDR^{-1} QTAQ=RDR1,因此 ( 6 ) (6) (6) 式可以写为 A k + 1 = D ∗ ( Q k ′ ) T ( R D R − 1 ) Q k ′ D ∗ (7) A_{k+1}=D^*\Big(Q_k'\Big)^T(RDR^{-1})Q_k'D^*\tag{7} Ak+1=D(Qk)T(RDR1)QkD(7) R 0 = R D R − 1 , g k = Q k ′ D ∗ R_0=RDR^{-1},g_k=Q_k'D^* R0=RDR1,gk=QkD R 0 [ i , i ] = λ i R_0[i,i]=\lambda_i R0[i,i]=λi所以 ( 7 ) (7) (7) 式可以写为 A k + 1 = g k T R 0 g k (8) A_{k+1}=g_k^TR_0g_k\tag{8} Ak+1=gkTR0gk(8)由于 ( E + Λ k → E ) ⇒ ( R ( E + Λ ) R − 1 = E + R Λ k R − 1 → E ) \Big(E+\Lambda_k\rightarrow E\Big)\Rightarrow \Big(R(E+\Lambda)R^{-1}=E+R\Lambda_kR^{-1}\rightarrow E\Big) (E+ΛkE)(R(E+Λ)R1=E+RΛkR1E)所以 Q k ′ → E Q'_k\rightarrow E QkE,所以 g k → D ∗ = d i a g { ± 1 , ± 1 , ⋯   , ± 1 } g_k\rightarrow D^*=diag\{\pm1,\pm1,\cdots,\pm1\} gkD=diag{±1,±1,,±1}所以 k → ∞ k\rightarrow\infin k 时, lim ⁡ A k + 1 [ i , i ] = λ i   ,   i = 1 , 2 , ⋯   , n \lim A_{k+1}[i,i]=\lambda_i~,~i=1,2,\cdots,n limAk+1[i,i]=λi , i=1,2,,n其收敛速度由 ∣ ∣ Λ k ∣ ∣ ∞ ||\Lambda_k||_{\infin} Λk 决定,有上限 ∣ ∣ Λ k ∣ ∣ ∞ ≤ C ⋅ max ⁡ j ∈ [ 1 , n − 1 ] ∣ λ j + 1 λ j ∣ k ||\Lambda_k||_{\infin}≤C·\max_{j\in[1,n-1]}\Big|\frac{\lambda_{j+1}}{\lambda_j}\Big|^k ΛkCj[1,n1]maxλjλj+1k
  • 上述收敛速度定义式 r n = ∣ λ n / λ n − 1 ∣ r_n=|\lambda_n/\lambda_{n-1}| rn=λn/λn1 与幂法中的收敛速度定义式相似度极高,当 r n ≈ 1 r_n\approx1 rn1 时收敛极慢,可以效仿幂法中采取原点位移策略,即对于矩阵 A − s ⋅ E A-s·E AsE 使用QR分解,那么收敛速度即为 r n ∗ = ∣ λ n − s λ n − 1 − s ∣ r_n^*=\Big|\frac{\lambda_n-s}{\lambda_{n-1}-s}\Big| rn=λn1sλns上述算法称为带原点位移的QR迭代算法

【Reference】UTEP-Math 5330.

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 逻辑极度清晰,可惜我弄丢了上述Lecture Note的网址,关于Householder变换可以参考Householder变换
  • 另外注意到Note中讨论了 a 11 = a 11 2 + a 21 2 + ⋯ + a n 1 2 = 0 a_{11}=\sqrt{a_{11}^2+a_{21}^2+\cdots+a_{n1}^2}=0 a11=a112+a212++an12 =0 的情况,不难发现上述等式成立意味着 a i 1 = 0 , i = 1 , 2 , ⋯   , n a_{i1}=0,i=1,2,\cdots,n ai1=0,i=1,2,,n,那么 A A A 是奇异矩阵,无法进行QR分解。
  • 第一个重点是 Algorithm3.1 的伪代码,一般情况下我们假定 A A A n n n 阶非奇异阵,即 m = n m=n m=n,伪代码中 β \beta β 是当次迭代列向量的模值, γ \gamma γ 是向量 v v v 的分母,后续计算出向量 v v v 以及对应的豪氏矩阵 H v = E − 2 v v T H_v=E-2vv^T Hv=E2vvT与矩阵 A A A 进行左乘 A 1 = H v A 0 A_1=H_vA_0 A1=HvA0,变量 Q Q Q 初值是 E m E_m Em 单位阵,迭代过程中对 H v H_v Hv 左乘,所以最终停止时 Q = ∏ i = 1 n − 1 H i Q=\prod_{i=1}^{n-1}H_i Q=i=1n1Hi即为QR分解中 A = Q R A=QR A=QR 的 【 Q Q Q】,而此时保存 A A A 的单元被 【 R R R】所覆盖。
  • 11-13行代码作用是在矩阵本身已是上三角化时直接进行下一次迭代。这篇Note的一个特点是,开篇已经假定 A A A 是非奇异阵,但后续的分析和伪码又是针对 A ∈ R   m × n A\in R^{~m\times n} AR m×n 考虑的,个人猜测是出于算法健壮性。
  • Note的最后一部分给出了基于Householder变化进行QR分解复杂度分析:
    在这里插入图片描述
    在这里插入图片描述
  • 上半部分关于 A A A 阵迭代无需显式计算豪氏矩阵以及 Q Q Q 阵迭代的浮点运算 flops 挺靠谱的,后半部分关于整个算法的复杂度分析持保留态度,尤其是最后给出的 2 3 r 3 \frac23r^3 32r3,这里不妨认为 r = min ⁡ m = n ( m , n ) = n r=\min_{m=n}(m,n)=n r=m=nmin(m,n)=n那么复杂度为 2 3 r 3 \frac23r^3 32r3,但这个已经出现 4 p 2 4p^2 4p2 项,求和后应为 4 3 r 3 \frac43r^3 34r3,个人倾向于这个答案,大致的 O ( n 3 ) O(n^3) O(n3) 是无疑的。
  • 给出结果为 4 3 n 3 \frac43n^3 34n3 的文献如下,来自UTexas(这俩名字应该是一个学校吧):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Summary.

  • 需要明确的是,第四部分内容是对于QR分解以及基于 Householder变换实现QR分解的,并不是用于求解矩阵全部特征值的QR迭代法。
  • 存疑】QR迭代法思路之一就是在迭代公式中使用Householder变换实现每一次迭代的QR分解,使用Householder变换进行QR分解的时间复杂度为 2 3 n 3 \frac23n^3 32n3,大约是第一部分构造性证明中使用Givens变换的 2 3 \frac23 32 倍。
  • 另一种QR迭代法的思路是首先使用Householder变换,将一般实矩阵(实对称矩阵)约化为上海森伯格矩阵(对称三对角矩阵),而后再进行QR迭代,这样做的优势在于可以使用对于稀疏矩阵较为高效的Givens变换阵(常数时间即可计算出)实现QR分解,而无需使用需要 n 2 n^2 n2 才能计算出的豪斯荷尔德矩阵。

  • 亟待解决】直接使用Householder变换进行的QR分解时间复杂度,有文献表明是 4 3 n 3 \frac43n^3 34n3,也有文献认为是 2 3 n 3 \frac23n^3 32n3,个人倾向于前一种说法,理由在上面。
  • 另外的两种QR分解方法,格拉姆-施密特正交化GS(以及修正格拉姆-施密特正交化MGS)和吉文斯变换,其复杂度也为 O ( n 3 ) O(n^3) O(n3),有说法认为前者的常数因子为 1 1 1,后者为 4 3 . \frac43. 34.
  • 使用豪斯荷尔德变换将实矩阵约化为上Hessenberg矩阵需要的乘法次数: 5 3 n 3 . \frac53n^3. 35n3.
  • 那么下图中的说法就不能成立:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值