自在学

我们与你共同进步

  • 分类课程
  • 文章
  • 工作台
  • 订阅

  • 关于我们
  • 隐私政策
  • 使用条款

探索

  • 分类课程
  • 文章
  • 工作台
  • 订阅

网站信息

  • 关于我们
  • 隐私政策
  • 使用条款

加入社区

自在学学习社区微信二维码

微信扫码,交流学习

株洲市自在学教育科技有限公司© 2025 - 2026 版权所有

© 2025 - 2026 株洲市自在学教育科技有限公司 版权所有

湘公网安备43020302000292号|湘ICP备2025148919号-1
分类课程工作台文章订阅
分类课程工作台文章价格

数值分析 I:误差、近似与科学计算

  1. 01浮点数与误差
  2. 02条件数与稳定算法
  3. 03非线性方程求根
  4. 04插值与逼近
  5. 05数值微分与积分
  6. 06线性方程组
  7. 07最小二乘与 QR
  8. 08特征值计算
  9. 09ODE 数值解
  10. 10科学计算工作流
正在加载课程章节内容
课程数学数值分析 I:误差、近似与科学计算特征值计算

把一个向量反复乘上同一矩阵,会发生什么?取

A=[2112],x0=(1,0)T.A=\begin{bmatrix}2&1\\1&2\end{bmatrix},\qquad x_0=(1,0)^T.A=[21​12​],x0​=(1,0)T.

第一次得到 (2,1)T(2,1)^T(2,1)T,第二次得到 (5,4)T(5,4)^T(5,4)T。数字越来越大,两个分量的比值却越来越接近 1。把长度暂时放在一边,方向似乎正在靠向 (1,1)T(1,1)^T(1,1)T。

这个现象给出了一条求特征值的路:不展开高次行列式,而是观察矩阵怎样反复改变向量。只是,方向有没有收敛、找到的是哪个特征值、剩下的误差有多大,都需要各自检查。

幂法留下的是最大模方向

特征向量 v≠0v\ne0v=0 满足 Av=λvAv=\lambda vAv=λv。若 AAA 可对角化,存在一组线性无关的特征向量 v1,…,vnv_1,\ldots,v_nv1​,…,vn​,初始向量可以唯一写成

x0=∑j=1ncjvj.x_0=\sum_{j=1}^n c_jv_j.x0​=j=1∑n​cj​vj​.

连续乘 AAA,每个方向只会被自己的特征值反复缩放:

Akx0=∑j=1ncjλjkvj.A^kx_0=\sum_{j=1}^nc_j\lambda_j^kv_j.Akx0​=j=1∑n​cj​λjk​vj​.

假设

∣λ1∣>∣λ2∣≥⋯≥∣λn∣,c1≠0.|\lambda_1|>|\lambda_2|\ge\cdots\ge|\lambda_n|,\qquad c_1\ne0.∣λ1​∣>∣λ2​∣≥⋯≥∣λn​∣,c1​=0.

把第一项的系数提出来:

Akx0=c1λ1k[v1+∑j=2ncjc1(λjλ1)kvj].A^kx_0=c_1\lambda_1^k \left[v_1+\sum_{j=2}^n\frac{c_j}{c_1} \left(\frac{\lambda_j}{\lambda_1}\right)^kv_j\right].Akx0​=c1​λ1k​[v1​+j=2∑n​c1​cj​​(λ1​λj​​)kvj​].

括号里其余系数的模都趋于零。因此,忽略整体倍数后,方向趋向 v1v_1v1​。每步乘一次 AAA 就足够,不必先形成整个 AkA^kAk;后者往往破坏稀疏结构,也多做了无用计算。

这个论证里的条件各有用途。可对角化保证上述展开成立,严格的模间隔让其他方向衰减,c1≠0c_1\ne0c1​=0 保证起点里确实含有所找的方向。“最大模”不等于“代数值最大”。 如果特征值为 −5,2,1-5,2,1−5,2,1,占优势的是 −5-5−5。

方向逐渐靠向占优势的特征方向。这里用未归一化箭头示意方向变化,长度、夹角和背景椭圆不对应某个指定矩阵的实际迭代;数值过程在交互中逐步计算。

方向逐渐靠向占优势的特征方向。这里用未归一化箭头示意方向变化,长度、夹角和背景椭圆不对应某个指定矩阵的实际迭代;数值过程在交互中逐步计算。

每轮归一化,避免数值膨胀

直接保存 Akx0A^kx_0Akx0​,可能很快上溢或下溢。幂法改为反复执行

yk=Axk,xk+1=yk∥yk∥∞.y_k=Ax_k,\qquad x_{k+1}=\frac{y_k}{\|y_k\|_\infty}.yk​=Axk​,xk+1​=∥yk​∥∞​yk​​.

这里采用无穷范数,是为了让手算的最大分量保持为 1;用 2-范数同样可以。除以一个非零标量不改变方向,所以前面的论证仍然适用。

如果 yk=0y_k=0yk​=0,不能继续除法。此时当前非零 xkx_kxk​ 已是零特征值对应的特征向量,但这并不说明零是最大模特征值。程序应该记录这个情况并停止。

开头的例子变成

x1=(1,1/2)T,Ax1=(5/2,2)T,x2=(1,4/5)T.x_1=(1,1/2)^T,\qquad Ax_1=(5/2,2)^T,\qquad x_2=(1,4/5)^T.x1​=(1,1/2)T,Ax1​=(5/2,2)T,x2​=(1,4/5)T.

两个精确特征方向分别为

v1=(1,1)T2,λ1=3;v2=(1,−1)T2,λ2=1.v_1=\frac{(1,1)^T}{\sqrt2},\quad \lambda_1=3; \qquad v_2=\frac{(1,-1)^T}{\sqrt2},\quad \lambda_2=1.v1​=2​(1,1)T​,λ1​=3;v2​=2​(1,−1)T​,λ2​=1.

x0x_0x0​ 在两者上的系数相等。由于 v1,v2v_1,v_2v1​,v2​ 正交,迭代方向与 v1v_1v1​ 所成锐角 θk\theta_kθk​ 满足

tan⁡θk=3−k.\tan\theta_k=3^{-k}.tanθk​=3−k.

所以这里每轮把角度的正切缩小到原来的三分之一。一般情况下,∣λ2/λ1∣|\lambda_2/\lambda_1|∣λ2​/λ1​∣ 控制主导的衰减速度;若相应次模态在初值中没有出现,实际可以更快,不能把这个比值理解为每个问题都精确相同的误差比。

看起来不动,未必完成了目标

对于 diag⁡(3,1)\operatorname{diag}(3,1)diag(3,1),从 (0,1)T(0,1)^T(0,1)T 出发,向量永远停在第二个方向。它的特征残差甚至精确为零,但找到的是 1。

对于 diag⁡(1,−1)\operatorname{diag}(1,-1)diag(1,−1),从 (1,1)T(1,1)^T(1,1)T 出发,会在 (1,1)T(1,1)^T(1,1)T 与 (1,−1)T(1,-1)^T(1,−1)T 之间循环;两个特征值等模,没有哪一个方向被相对压下去。若最大模特征值为负,情况又不同:向量可能整体交替变号,但所张成的直线已经收敛。比较两个单位向量 u,vu,vu,v 的方向时,可以看

min⁡{∥u−v∥2, ∥u+v∥2},\min\{\|u-v\|_2,\ \|u+v\|_2\},min{∥u−v∥2​, ∥u+v∥2​},

避免把同一直线的相反朝向误判为不收敛。这个方向差仍不能替代原方程残差。

在实验里比较谱比相差很大的两种矩阵。运行之前,试着判断哪一种会更快;再切换到缺少主方向的初值和等模例子,观察为什么“多迭代几次”解决不了它们。表中的单位向量、Rayleigh 商与残差必须来自同一个迭代时刻。

用 Rayleigh 商估计特征值

手里已有非零近似向量 xxx,应该配上哪个标量 μ\muμ?把

∥Ax−μx∥22=∥Ax∥22−2μxTAx+μ2xTx\|Ax-\mu x\|_2^2 =\|Ax\|_2^2-2\mu x^TAx+\mu^2x^Tx∥Ax−μx∥22​=∥Ax∥22​−2μxTAx+μ2xTx

看成关于实数 μ\muμ 的二次函数,最小点是

ρ(x)=xTAxxTx.\rho(x)=\frac{x^TAx}{x^Tx}.ρ(x)=xTxxTAx​.

这就是 Rayleigh 商。它不随 xxx 的非零倍数改变;当 xxx 是精确特征向量时,给出的正是相应特征值。

对于实对称矩阵,可以取一组标准正交特征向量。这个事实也有一个直观的证明路线:二次型 uTAuu^TAuuTAu 在单位球面上能取到最大值;对任意垂直于 uuu 的切向量 www,方向导数 2wTAu2w^TAu2wTAu 必须为零,便要求 AuAuAu 与 uuu 平行。这个方向的正交补在 AAA 作用下保持不变,因为 uTAw=(Au)Tw=0u^TAw=(Au)^Tw=0uTAw=(Au)Tw=0。在正交补里重复同一论证,就得到完整的正交特征基。

将单位向量展开为 u=∑jajvju=\sum_j a_jv_ju=∑j​aj​vj​,有

∑jaj2=1,ρ(u)=∑jλjaj2.\sum_j a_j^2=1,\qquad \rho(u)=\sum_j\lambda_j a_j^2.j∑​aj2​=1,ρ(u)=j∑​λj​aj2​.

所以对称情形的 Rayleigh 商是特征值的加权平均,必定落在最小与最大特征值之间。若 θ\thetaθ 是 uuu 与某个特征向量 v1v_1v1​ 的锐角,则

ρ(u)−λ1=∑j≠1(λj−λ1)aj2,\rho(u)-\lambda_1 =\sum_{j\ne1}(\lambda_j-\lambda_1)a_j^2,ρ(u)−λ1​=j=1∑​(λj​−λ1​)aj2​,

从而

∣ρ(u)−λ1∣≤max⁡j≠1∣λj−λ1∣sin⁡2θ.|\rho(u)-\lambda_1| \le \max_{j\ne1}|\lambda_j-\lambda_1|\sin^2\theta.∣ρ(u)−λ1​∣≤j=1max​∣λj​−λ1​∣sin2θ.

这解释了一个常见现象:特征值读数已经很准,向量方向还没有同样准确。此处的平方误差依赖对称性,不能直接照搬到任意非对称矩阵。

把第二轮结果代回去

开头第二轮的向量是 x2=(1,4/5)Tx_2=(1,4/5)^Tx2​=(1,4/5)T。直接计算:

Ax2=(14/5,13/5)T,x2TAx2=12225,x2Tx2=4125.Ax_2=(14/5,13/5)^T,\qquad x_2^TAx_2=\frac{122}{25},\qquad x_2^Tx_2=\frac{41}{25}.Ax2​=(14/5,13/5)T,x2T​Ax2​=25122​,x2T​x2​=2541​.

因此

ρ(x2)=12241≈2.97561.\rho(x_2)=\frac{122}{41}\approx2.97561.ρ(x2​)=41122​≈2.97561.

它小于 3,与加权平均的范围一致。为了让残差不受向量长度影响,将 x2x_2x2​ 化成单位向量

u2=(5,4)T41.u_2=\frac{(5,4)^T}{\sqrt{41}}.u2​=41​(5,4)T​.

本章的特征残差约定为 r=Au−ρur=Au-\rho ur=Au−ρu,即“矩阵作用结果减去预计的伸缩结果”。代入得

r=94141(−4,5)T,∥r∥2=941.r=\frac{9}{41\sqrt{41}}(-4,5)^T,\qquad \|r\|_2=\frac9{41}.r=4141​9​(−4,5)T,∥r∥2​=419​.

特征值误差是 3−ρ=1/413-\rho=1/413−ρ=1/41,与残差长度不是同一个量。由 tan⁡θ2=1/9\tan\theta_2=1/9tanθ2​=1/9 还可算出 sin⁡2θ2=1/82\sin^2\theta_2=1/82sin2θ2​=1/82,恰好有 3−ρ=2sin⁡2θ23-\rho=2\sin^2\theta_23−ρ=2sin2θ2​。

同一个单位向量既给出 Rayleigh 商,也给出特征残差。主例第二轮的值误差为 1/41,残差长度为 9/41,两项检查不能互相替代。

同一个单位向量既给出 Rayleigh 商,也给出特征残差。主例第二轮的值误差为 1/41,残差长度为 9/41,两项检查不能互相替代。

残差能证明多少

下文都让 uuu 的 2-范数为 1。否则应把残差长度除以 ∥u∥2\|u\|_2∥u∥2​,不能靠把整个向量缩小来制造“漂亮的小残差”。

令 r=Au−ρur=Au-\rho ur=Au−ρu,构造

E=−ruT.E=-ru^T.E=−ruT.

由于 uTu=1u^Tu=1uTu=1,

(A+E)u=Au−r=ρu,∥E∥2=∥r∥2.(A+E)u=Au-r=\rho u,\qquad \|E\|_2=\|r\|_2.(A+E)u=Au−r=ρu,∥E∥2​=∥r∥2​.

因此,小残差保证这对数值是一个邻近矩阵的精确特征对。这是后向解释,适用于这里的任意实矩阵。若 AAA 对称且 ρ=ρ(u)\rho=\rho(u)ρ=ρ(u),还有 uTr=0u^Tr=0uTr=0,可以改用对称扰动

E=−ruT−urT.E=-ru^T-ur^T.E=−ruT−urT.

它同样满足 Eu=−rEu=-rEu=−r;在 uuu 与 r/∥r∥2r/\|r\|_2r/∥r∥2​ 张成的平面上,它的矩阵为

[0−∥r∥2−∥r∥20],\begin{bmatrix}0&-\|r\|_2\\-\|r\|_2&0\end{bmatrix},[0−∥r∥2​​−∥r∥2​0​],

其他正交方向上为零,故其 2-范数仍为 ∥r∥2\|r\|_2∥r∥2​。当 r=0r=0r=0 时直接取 E=0E=0E=0。

对称矩阵:值误差与方向误差分开估计

使用刚才的正交特征基,

r=∑j(λj−ρ)ajvj,∥r∥22=∑j(λj−ρ)2aj2.r=\sum_j(\lambda_j-\rho)a_jv_j,\qquad \|r\|_2^2=\sum_j(\lambda_j-\rho)^2a_j^2.r=j∑​(λj​−ρ)aj​vj​,∥r∥22​=j∑​(λj​−ρ)2aj2​.

令 d=min⁡j∣λj−ρ∣d=\min_j|\lambda_j-\rho|d=minj​∣λj​−ρ∣,每一项都不小于 d2aj2d^2a_j^2d2aj2​,因此

min⁡j∣λj−ρ∣≤∥r∥2.\boxed{\min_j|\lambda_j-\rho|\le\|r\|_2.}jmin​∣λj​−ρ∣≤∥r∥2​.​

这保证附近至少有一个特征值,还没有指定是哪一个。

若要判断与一个简单特征值 λℓ\lambda_\ellλℓ​ 的方向有多近,需要它与其他特征值分开。设

g=min⁡j≠ℓ∣λj−ρ∣>0.g=\min_{j\ne\ell}|\lambda_j-\rho|>0.g=j=ℓmin​∣λj​−ρ∣>0.

只保留残差展开中 j≠ℓj\ne\ellj=ℓ 的项,便有

∥r∥22≥g2∑j≠ℓaj2=g2sin⁡2θ,sin⁡θ≤∥r∥2g.\|r\|_2^2\ge g^2\sum_{j\ne\ell}a_j^2 =g^2\sin^2\theta, \qquad \boxed{\sin\theta\le\frac{\|r\|_2}{g}.}∥r∥22​≥g2j=ℓ∑​aj2​=g2sin2θ,sinθ≤g∥r∥2​​.​

这里的间隔是其他特征值到当前估计 ρ\rhoρ 的距离。使用这个界时,必须有相应的间隔信息;不能一边不知道谱的位置,一边把 ggg 当成已知常数。

取

A=diag⁡(1,1+δ),u=(1,1)T2,δ>0.A=\operatorname{diag}(1,1+\delta),\qquad u=\frac{(1,1)^T}{\sqrt2},\quad \delta>0.A=diag(1,1+δ),u=2​(1,1)T​,δ>0.

有 ρ=1+δ/2\rho=1+\delta/2ρ=1+δ/2,∥r∥2=δ/2\|r\|_2=\delta/2∥r∥2​=δ/2。让 δ\deltaδ 很小,残差可以任意小;但 uuu 与两个坐标特征方向始终都成 45∘45^\circ45∘。两个特征值越来越难分开,小残差无法选出其中某一个方向。

两个坐标方向标示特征方向,青色箭头表示固定的 u。特征值更接近后,残差变小,但夹角仍为 45 度;图中箭头长度不用于比较向量的模。

两个坐标方向标示特征方向,青色箭头表示固定的 u。特征值更接近后,残差变小,但夹角仍为 45 度;图中箭头长度不用于比较向量的模。

非对称问题不能照搬这个界

看看

AM=[1M02],u=(M,2)TM2+4,M>0.A_M=\begin{bmatrix}1&M\\0&2\end{bmatrix},\qquad u=\frac{(M,2)^T}{\sqrt{M^2+4}},\qquad M>0.AM​=[10​M2​],u=M2+4​(M,2)T​,M>0.

它的特征值一直是 1 和 2,但

ρ(u)=3M2+8M2+4,∥AMu−ρ(u)u∥2=2MM2+4.\rho(u)=\frac{3M^2+8}{M^2+4},\qquad \|A_Mu-\rho(u)u\|_2=\frac{2M}{M^2+4}.ρ(u)=M2+43M2+8​,∥AM​u−ρ(u)u∥2​=M2+42M​.

当 MMM 增大,Rayleigh 商靠近 3,残差趋于零;估计到真实谱的距离却靠近 1。前面的后向解释没有失效,失效的是“邻近矩阵的特征值必定同样接近原矩阵特征值”这一额外推断。非正交特征方向可能使问题敏感。

实际停止时,可以报告

η=∥Au−ρu∥2∥A∥F+∣ρ∣,\eta=\frac{\|Au-\rho u\|_2}{\|A\|_F+|\rho|},η=∥A∥F​+∣ρ∣∥Au−ρu∥2​​,

其中 ∥A∥F\|A\|_F∥A∥F​ 是全部元素平方和的平方根,方便计算。它是按矩阵尺度归一化的检查量;若分母为零,矩阵和估计都为零,直接检查残差即可。还应记录迭代上限、是否停滞,以及所找的是哪部分谱。只看两次 ρ\rhoρ 的差,可能在等模循环中误停。

移位反迭代:把目标附近的方向放大

幂法只能优先留下最大模方向。如果目标在 10 附近,最大模特征值却是 1000,继续原来的乘法不会改变目标。

对移位 μ\muμ,由 Avj=λjvjAv_j=\lambda_jv_jAvj​=λj​vj​ 得

(A−μI)vj=(λj−μ)vj.(A-\mu I)v_j=(\lambda_j-\mu)v_j.(A−μI)vj​=(λj​−μ)vj​.

只要 μ\muμ 不是特征值,就可以继续写成

(A−μI)−1vj=1λj−μvj.(A-\mu I)^{-1}v_j=\frac1{\lambda_j-\mu}v_j.(A−μI)−1vj​=λj​−μ1​vj​.

原来的特征方向没变,特征值经过“减去移位、再取倒数”变换。离 μ\muμ 越近,倒数的模越大。

算法不形成逆矩阵。每轮解

(A−μI)yk=xk,xk+1=yk/∥yk∥∞,(A-\mu I)y_k=x_k,\qquad x_{k+1}=y_k/\|y_k\|_\infty,(A−μI)yk​=xk​,xk+1​=yk​/∥yk​∥∞​,

再用原矩阵 AAA 计算 Rayleigh 商和残差。固定 μ\muμ 时,A−μIA-\mu IA−μI 的带主元 LU 分解可以复用;每轮只需前代、回代与归一化。这正好用上第 6 章的分解复用。

若 λ∗\lambda_\astλ∗​ 唯一最近,下一近的特征值为 λnext\lambda_{\mathrm{next}}λnext​,并满足可对角化与初值含有目标分量等条件,则方向的主导收敛因子为

∣λ∗−μλnext−μ∣.\left|\frac{\lambda_\ast-\mu} {\lambda_{\mathrm{next}}-\mu}\right|.​λnext​−μλ∗​−μ​​.

两个特征值与移位等距时,严格优势可能消失。移位精确等于特征值时,线性系统奇异,不能按普通求解步骤硬算。

同一组谱,换一个观察位置

令

A=diag⁡(1,3,6),μ=145,x0=(1,1,1)T.A=\operatorname{diag}(1,3,6),\qquad \mu=\frac{14}{5},\qquad x_0=(1,1,1)^T.A=diag(1,3,6),μ=514​,x0​=(1,1,1)T.

第一轮求解得到

y0=(−5/9, 5, 5/16)T,x1=(−1/9, 1, 1/16)T.y_0=(-5/9,\ 5,\ 5/16)^T, \qquad x_1=(-1/9,\ 1,\ 1/16)^T.y0​=(−5/9, 5, 5/16)T,x1​=(−1/9, 1, 1/16)T.

第二轮归一化后是

x2=(1/81, 1, 1/256)T.x_2=(1/81,\ 1,\ 1/256)^T.x2​=(1/81, 1, 1/256)T.

目标方向是中间的坐标轴。与特征值 1 对应的分量每轮相对缩小 1/91/91/9 并交替变号,与 6 对应的分量每轮相对缩小 1/161/161/16。原幂法会优先找到 6,改变移位后却可以找到 3。

减去 14/5 再取倒数之后,中间特征值对应的放大倍数模最大。每一行保留同一个特征方向,改变的是该方向的伸缩倍数。

减去 14/5 再取倒数之后,中间特征值对应的放大倍数模最大。每一行保留同一个特征方向,改变的是该方向的伸缩倍数。

靠近目标通常加快方向收敛,同时也让线性系统接近奇异。这里不能只凭“病态”二字断言归一化后的方向一定很差:被放大的误差可能主要沿目标方向,归一化会消去一部分尺度影响。但必须用原矩阵重算残差,处理求解失败,并避免溢出。这个判断不能由迭代次数代替。

让移位跟着当前估计改变

把固定 μ\muμ 换成当前 Rayleigh 商,就是一种动态移位方法。它需要每轮重新分解系数矩阵,成本比复用一个 LU 高,局部收敛却可能快得多。

在对称二阶问题中可以把原因算透。令 v1,v2v_1,v_2v1​,v2​ 为单位正交特征向量,λ1≠λ2\lambda_1\ne\lambda_2λ1​=λ2​,当前方向写成 v1+tv2v_1+tv_2v1​+tv2​,并且靠近 v1v_1v1​。它的 Rayleigh 商为

ρ=λ1+λ2t21+t2.\rho=\frac{\lambda_1+\lambda_2t^2}{1+t^2}.ρ=1+t2λ1​+λ2​t2​.

用这个值移位并解一次系统后,两个方向的系数比变成

tnew=tλ1−ρλ2−ρ=−t3.t_{\mathrm{new}} =t\frac{\lambda_1-\rho}{\lambda_2-\rho} =-t^3.tnew​=tλ2​−ρλ1​−ρ​=−t3.

误差比例从 ttt 变成 −t3-t^3−t3,这是二阶对称情形中局部三次加速的直接证据。它不是任意初值都迅速成功的保证:∣t∣=1|t|=1∣t∣=1 时仍可能来回循环;t=0t=0t=0 时已经是特征向量,应在求解奇异系统之前停止。

实验中先固定移位,查看同一份分解怎样被反复使用;然后改用当前 Rayleigh 商,比较分解次数与方向误差。把移位放在两个特征值中点,再精确放到某个特征值上,观察两种失败原因的区别。每次最终检查仍使用原来的 AAA。

QR 迭代:把整组谱留在矩阵里

如果需要一组特征值,逐个试移位并不总是合适。第 7 章的 QR 分解提供了另一种组织方式。记 A0=AA_0=AA0​=A,反复做

Ak=QkRk,Ak+1=RkQk,A_k=Q_kR_k,\qquad A_{k+1}=R_kQ_k,Ak​=Qk​Rk​,Ak+1​=Rk​Qk​,

其中 QkQ_kQk​ 是正交方阵。由于

QkTAkQk=QkTQkRkQk=RkQk,Q_k^TA_kQ_k =Q_k^TQ_kR_kQ_k =R_kQ_k,QkT​Ak​Qk​=QkT​Qk​Rk​Qk​=Rk​Qk​,

每一步都是正交相似变换。

相似为什么保留特征值?若 Akv=λvA_kv=\lambda vAk​v=λv,则

Ak+1(QkTv)=QkTAkv=λ(QkTv).A_{k+1}(Q_k^Tv)=Q_k^TA_kv =\lambda(Q_k^Tv).Ak+1​(QkT​v)=QkT​Ak​v=λ(QkT​v).

QkTvQ_k^TvQkT​v 不会变成零,所以特征值保留下来。重数也不变,因为

det⁡(λI−Ak+1)=det⁡(QkT)det⁡(λI−Ak)det⁡(Qk)=det⁡(λI−Ak).\det(\lambda I-A_{k+1}) =\det(Q_k^T)\det(\lambda I-A_k)\det(Q_k) =\det(\lambda I-A_k).det(λI−Ak+1​)=det(QkT​)det(λI−Ak​)det(Qk​)=det(λI−Ak​).

只是坐标换了,特征向量的分量通常也跟着变。

对于主例,可以取

Q0=15[2−112],R0=15[5403].Q_0=\frac1{\sqrt5} \begin{bmatrix}2&-1\\1&2\end{bmatrix}, \qquad R_0=\frac1{\sqrt5} \begin{bmatrix}5&4\\0&3\end{bmatrix}.Q0​=5​1​[21​−12​],R0​=5​1​[50​43​].

检查 Q0TQ0=IQ_0^TQ_0=IQ0T​Q0​=I、Q0R0=AQ_0R_0=AQ0​R0​=A 后,倒过来相乘:

A1=R0Q0=15[14336].A_1=R_0Q_0=\frac15 \begin{bmatrix}14&3\\3&6\end{bmatrix}.A1​=R0​Q0​=51​[143​36​].

非对角元从 1 变成 3/53/53/5。迹仍为 4,行列式仍为 3;新的对角元 14/5,6/514/5,6/514/5,6/5 已经接近 3 和 1,但还不是精确特征值。

同一组 Q、R 按两种顺序相乘,得到正交相似的矩阵。右边的整体因子 1/5 作用于所有元素,因此非对角元实际为 3/5。

同一组 Q、R 按两种顺序相乘,得到正交相似的矩阵。右边的整体因子 1/5 作用于所有元素,因此非对角元实际为 3/5。

与幂法的联系,以及不能省掉的条件

累积正交变换

Zk=Q0Q1⋯Qk−1,Z0=I,Z_k=Q_0Q_1\cdots Q_{k-1},\qquad Z_0=I,Zk​=Q0​Q1​⋯Qk−1​,Z0​=I,

便有 Ak=ZkTAZkA_k=Z_k^TAZ_kAk​=ZkT​AZk​。由 Ak=QkRkA_k=Q_kR_kAk​=Qk​Rk​ 可得

AZk=Zk+1Rk.AZ_k=Z_{k+1}R_k.AZk​=Zk+1​Rk​.

观察第一列,上三角矩阵的第一列只有首项,因此

A(Zke1)=r11(k)Zk+1e1.A(Z_ke_1)=r_{11}^{(k)}Z_{k+1}e_1.A(Zk​e1​)=r11(k)​Zk+1​e1​.

累积基的第一列实际上沿着幂法更新,只是把归一化信息放进了 RkR_kRk​。其余列同时保持正交,避免所有列都挤向同一个方向。

主例是对称二阶矩阵,第一列向主特征方向靠近时,第二列因正交性也向另一个特征方向靠近。因此 ZkTAZkZ_k^TAZ_kZkT​AZk​ 的非对角项趋于零。这解释了本例为何成功。一般高维问题还涉及嵌套不变子空间和更多收敛条件,不能从“每步保谱”直接推出“总会变成对角矩阵”。

比如

A=[0110]A=\begin{bmatrix}0&1\\1&0\end{bmatrix}A=[01​10​]

是正交矩阵。取 Q=A,R=IQ=A,R=IQ=A,R=I,交换因子后又得到 AAA,迭代根本没有前进。它的特征值是 1,−11,-11,−1,又一次遇到了等模问题。

移位必须加回来

带移位的一步写成

Ak−μkI=QkRk,Ak+1=RkQk+μkI.A_k-\mu_kI=Q_kR_k,\qquad A_{k+1}=R_kQ_k+\mu_kI.Ak​−μk​I=Qk​Rk​,Ak+1​=Rk​Qk​+μk​I.

这样仍有 Ak+1=QkTAkQkA_{k+1}=Q_k^TA_kQ_kAk+1​=QkT​Ak​Qk​。漏掉最后的加回操作,会真的改变谱。

一种容易尝试的选择是末对角元 μk=(Ak)nn\mu_k=(A_k)_{nn}μk​=(Ak​)nn​,但它也会停滞。对主例,μ0=2\mu_0=2μ0​=2,于是 A0−2IA_0-2IA0​−2I 恰好是刚才的交换矩阵;交换因子、再加回 2I2I2I,仍然得到原矩阵。成熟算法会使用更细致的移位策略,例如参考末尾二阶块的特征值;不能把一个方便的启发式说成全局保证。

这里还有一个与反迭代不同的地方:移位矩阵奇异时,QR 分解本身仍然存在,只是 RRR 可能有零对角元。因为这一算法不解 Rx=bR x=bRx=b,零对角元不自动意味着失败。计算时必须能正确补足正交基,不能直接用除以零的方式构造它。

在实验里逐步查看 Q,RQ,RQ,R 和换序后的矩阵,核对迹、行列式与累积基。比较不移位、固定移位和末对角移位,尤其观察主例为何会被末对角移位卡住。矩阵图中的非对角色块变淡时,回到原矩阵的特征残差也应该随之减小。

结构、去耦与停止

对一个稠密大矩阵,每轮都完整做 QR 代价较高。常用准备步骤是通过左右配对的 Householder 反射,将它变成上 Hessenberg 矩阵:

H=ZTAZ,hij=0(i>j+1).H=Z^TAZ,\qquad h_{ij}=0\quad(i>j+1).H=ZTAZ,hij​=0(i>j+1).

这里只消去第一条次对角线以下的元素。左边做一次反射改变行,右边乘上同一反射保证相似性;不能只做左变换。后续反射避开已经处理的坐标,便可逐列保留先前的零。

上 Hessenberg 矩阵的 QR 消元每次只需处理相邻两行,重新相乘也保持这种结构,所以一次结构化 QR 步只需 O(n2)O(n^2)O(n2) 运算;最初的稠密化简仍需 O(n3)O(n^3)O(n3)。若原矩阵实对称,Hessenberg 形式同时对称,便只剩三条对角线。利用三对角结构计算特征值更省,但累积全部特征向量还会增加工作量。

上 Hessenberg 结构只要求第一条次对角线以下为零;再加上对称性,第一条超对角线以外的上方元素也必须为零。叉号表示可非零,并不要求一定非零。

上 Hessenberg 结构只要求第一条次对角线以下为零;再加上对称性,第一条超对角线以外的上方元素也必须为零。叉号表示可非零,并不要求一定非零。

以对称二阶块说明“去耦”:

B=[abbd].B=\begin{bmatrix}a&b\\b&d\end{bmatrix}.B=[ab​bd​].

当 bbb 足够小时,将两个非对角元设成零,相当于增加

ΔB=[0−b−b0],∥ΔB∥2=∣b∣.\Delta B=\begin{bmatrix}0&-b\\-b&0\end{bmatrix}, \qquad \|\Delta B\|_2=|b|.ΔB=[0−b​−b0​],∥ΔB∥2​=∣b∣.

这个操作使两个坐标方向分开,每个对角元都可以作为一个特征值近似。若 B=ZTAZB=Z^TAZB=ZTAZ,原坐标中的近似向量 Ze2Ze_2Ze2​ 满足

A(Ze2)−d(Ze2)=Z(b,0)T,A(Ze_2)-d(Ze_2)=Z(b,0)^T,A(Ze2​)−d(Ze2​)=Z(b,0)T,

残差长度恰好为 ∣b∣|b|∣b∣。因此,消去小项要与容差和原矩阵尺度联系起来,而不是看图上“颜色差不多白了”就停止。

对一般实非对称矩阵,目标常是准上三角形式:实特征值对应一阶块,共轭复特征值对应二阶块。实数算法不能保证把含复特征值的矩阵变成实对角矩阵。这里已经足够解释 QR 的基本选择;隐式双移位、复杂去耦准则和大型稀疏谱算法不在本章的实现范围内。

练习:同时检查计算和结论

选择方法时,先弄清需要哪部分谱,以及矩阵允许什么运算。只需最大模方向、又能快速算 AxAxAx 时,幂法是清楚的起点;稀疏乘法的工作量随非零元素数增长。只需某个位置附近的特征对、且能承担移位系统分解时,反迭代更有针对性。固定移位的稠密 LU 首次约需 O(n3)O(n^3)O(n3),后续每次求解约需 O(n2)O(n^2)O(n2);换移位通常要重做分解。需要稠密矩阵的一组谱时,QR 的整体变换更合适。实际大型稀疏问题常采用更丰富的子空间方法,这里学到的残差检查与谱间隔判断仍然适用。

题 1 对 A=diag⁡(−4,2)A=\operatorname{diag}(-4,2)A=diag(−4,2),从 x0=(1,1)Tx_0=(1,1)^Tx0​=(1,1)T 出发,用无穷范数归一化做两轮幂法。单位向量是否会收敛到同一个朝向?方向误差的主导因子是多少?

第一轮 x1=(−1,1/2)Tx_1=(-1,1/2)^Tx1​=(−1,1/2)T,第二轮 x2=(1,1/4)Tx_2=(1,1/4)^Tx2​=(1,1/4)T。一般 xk=((−1)k,2−k)Tx_k=((-1)^k,2^{-k})^Txk​=((−1)k,2−k)T,单位向量在接近 e1e_1e1​ 与 −e1-e_1−e1​ 之间交替,不趋于同一个朝向;它们张成的直线趋于 e1e_1e1​ 方向。正交分量相对主分量的模为 2−k2^{-k}2−k,因子是 1/21/21/2。Rayleigh 商则趋于 −4-4−4,不会因为归一化长度为正就变成 4。

题 2 对 diag⁡(5,2,1)\operatorname{diag}(5,2,1)diag(5,2,1),起点 (0,1,1)T(0,1,1)^T(0,1,1)T 能否通过精确幂法找到 5?另取 diag⁡(2,−2)\operatorname{diag}(2,-2)diag(2,−2) 和起点 (1,1)T(1,1)^T(1,1)T,为什么用连续两轮 Rayleigh 商相等作为停止依据不可靠?

第一个起点没有 e1e_1e1​ 分量,乘对角矩阵后该分量仍为零。方向会趋向 e2e_2e2​,找出 2。浮点扰动有时能重新引入缺失分量,但不能把它当成确定的算法步骤。

第二个例子交替得到两个方向 (1,1)T(1,1)^T(1,1)T、(1,−1)T(1,-1)^T(1,−1)T,Rayleigh 商一直是零。单位化后残差长度一直为 2,零也不在真实谱中;读数不变并不代表找到了特征对。

题 3 令 A=diag⁡(4,1)A=\operatorname{diag}(4,1)A=diag(4,1),u=(3,1)T/10u=(3,1)^T/\sqrt{10}u=(3,1)T/10​。求 ρ,r,∥r∥2\rho,r,\|r\|_2ρ,r,∥r∥2​;使用残差界估计特征值误差,并给出相对 e1e_1e1​ 的角度界。若把 uuu 改成 10−8u10^{-8}u10−8u,哪些量不应改变?

加权平均给出 ρ=37/10\rho=37/10ρ=37/10,

r=110(9/10,−27/10)T,∥r∥2=9/10.r=\frac1{\sqrt{10}}(9/10,-27/10)^T,\qquad \|r\|_2=9/10.r=10​1​(9/10,−27/10)T,∥r∥2​=9/10.

至少有一个特征值距离 ρ\rhoρ 不超过 0.90.90.9;实际最近的是 4,误差为 0.30.30.3。对 e1e_1e1​ 而言,其他特征值到 ρ\rhoρ 的距离为 g=27/10g=27/10g=27/10,于是 sin⁡θ≤1/3\sin\theta\le1/3sinθ≤1/3。真实 sin⁡θ=1/10\sin\theta=1/\sqrt{10}sinθ=1/10​,确实满足。

缩放向量后 Rayleigh 商和方向不变,未经归一化的残差长度缩小 10810^8108 倍,但残差除以向量长度的比值不变。因此上面的误差判断不能直接使用缩小后的裸残差。

题 4 把正文聚集谱例子的起点改为 u=(3/2,1/2)Tu=(\sqrt3/2,1/2)^Tu=(3​/2,1/2)T。证明残差仍可任意小,而它与 e1e_1e1​ 的夹角始终为 30∘30^\circ30∘。

对 A=diag⁡(1,1+δ)A=\operatorname{diag}(1,1+\delta)A=diag(1,1+δ),有

ρ=1+δ/4,r=(−3 δ/8, 3δ/8)T,∥r∥2=3 δ/4.\rho=1+\delta/4,\qquad r=(-\sqrt3\,\delta/8,\ 3\delta/8)^T,\qquad \|r\|_2=\sqrt3\,\delta/4.ρ=1+δ/4,r=(−3​δ/8, 3δ/8)T,∥r∥2​=3​δ/4.

δ→0\delta\to0δ→0 时残差趋于零,向量本身却没有改变,所以夹角仍为 30∘30^\circ30∘。谱隙也同时趋于零,这正是残差不能独自限制方向误差的原因。

题 5 对正文的 AM,uA_M,uAM​,u,取 M=1000M=1000M=1000。估计 Rayleigh 商、残差长度及最近特征值误差。说明后向解释为什么不与结果矛盾。

代入得 ρ≈2.999996\rho\approx2.999996ρ≈2.999996,残差长度约 0.0019999920.0019999920.001999992,最近特征值 2 的误差约 0.9999960.9999960.999996。取 E=−ruTE=-ru^TE=−ruT 后,ρ\rhoρ 是 AM+EA_M+EAM​+E 的精确特征值,且扰动长度只有约 0.0020.0020.002。这说明该非对称问题对矩阵扰动敏感;并没有证明 ρ\rhoρ 接近原矩阵的谱。正文对称残差界所用的正交特征基,在此不具备。

题 6 令 A=diag⁡(−2,1,5)A=\operatorname{diag}(-2,1,5)A=diag(−2,1,5),μ=4\mu=4μ=4,从 (1,1,1)T(1,1,1)^T(1,1,1)T 做一轮反迭代。它倾向哪个方向,主导比值是多少?将移位改成 3 或 5,又有什么变化?

线性系统的对角元为 −6,−3,1-6,-3,1−6,−3,1,所以归一化后仍为 (−1/6,−1/3,1)T(-1/6,-1/3,1)^T(−1/6,−1/3,1)T。目标是特征值 5,次近是 1,主导比值为 1/31/31/3。

移位 3 到 1 和 5 等距,这两个方向的放大模相同,通常不会选出唯一方向。移位 5 使系数矩阵奇异;若当前还没有通过特征残差检查,就应报告求解问题,而非继续除法。

题 7 在特征基中,A=diag⁡(4,1)A=\operatorname{diag}(4,1)A=diag(4,1),当前方向为 (1,1/2)T(1,1/2)^T(1,1/2)T。求 Rayleigh 商,用它移位求出下一轮方向,再核对三次关系。

当前 ρ=17/5\rho=17/5ρ=17/5。解

diag⁡(3/5,−12/5)y=(1,1/2)T\operatorname{diag}(3/5,-12/5)y=(1,1/2)^Tdiag(3/5,−12/5)y=(1,1/2)T

得到 y=(5/3,−5/24)Ty=(5/3,-5/24)^Ty=(5/3,−5/24)T。将首分量化成 1 后,新方向为 (1,−1/8)T(1,-1/8)^T(1,−1/8)T,正好满足 tnew=−(1/2)3t_{\mathrm{new}}=-(1/2)^3tnew​=−(1/2)3。新的 Rayleigh 商为

4+1/641+1/64=25765,\frac{4+1/64}{1+1/64}=\frac{257}{65},1+1/644+1/64​=65257​,

离 4 还差 3/653/653/65,不是一次迭代就精确完成。

题 8 对 A=[3111]A=\begin{bmatrix}3&1\\1&1\end{bmatrix}A=[31​11​],验证

Q=110[3−113],R=110[10402].Q=\frac1{\sqrt{10}}\begin{bmatrix}3&-1\\1&3\end{bmatrix}, \qquad R=\frac1{\sqrt{10}}\begin{bmatrix}10&4\\0&2\end{bmatrix}.Q=10​1​[31​−13​],R=10​1​[100​42​].

计算一次 QR 换序结果,并求原坐标中 Qe2Qe_2Qe2​ 搭配新末对角元的残差长度。

两列正交且单位长,乘回 QRQRQR 得原矩阵。换序得到

RQ=110[34226].RQ=\frac1{10}\begin{bmatrix}34&2\\2&6\end{bmatrix}.RQ=101​[342​26​].

迹为 4,行列式为 2,与原矩阵相同。取 d=3/5d=3/5d=3/5,u=Qe2=(−1,3)T/10u=Qe_2=(-1,3)^T/\sqrt{10}u=Qe2​=(−1,3)T/10​,有

Au−du=110(3/5,1/5)T,Au-du=\frac1{\sqrt{10}}(3/5,1/5)^T,Au−du=10​1​(3/5,1/5)T,

长度为 1/51/51/5,与换序矩阵的非对角元绝对值相等。残差计算把新坐标中的变化带回了原问题。

题 9 对 B=[2bb2]B=\begin{bmatrix}2&b\\b&2\end{bmatrix}B=[2b​b2​],b>0b>0b>0,证明每轮取末对角移位 2 会停滞。若 b=10−4b=10^{-4}b=10−4,把它设为零时,两个特征值各产生多少误差?能否因此满足绝对误差 10−610^{-6}10−6 的要求?

移位后为 b[0110]b\begin{bmatrix}0&1\\1&0\end{bmatrix}b[01​10​],可取 QQQ 为交换矩阵、R=bIR=bIR=bI。换序加回移位仍是 BBB。

真实特征值为 2+b,2−b2+b,2-b2+b,2−b,去耦后都变成 2,各自绝对误差均为 b=10−4b=10^{-4}b=10−4。所以不满足 10−610^{-6}10−6。保谱迭代与主动舍去小项是不同操作,后者必须计入误差预算。

10
一个单位向量的特征残差很小,就足以断定它接近最大模特征值对应的唯一方向。
上一章最小二乘与 QR下一章ODE 数值解