Skip to content

04 Householder、Givens 与 QR 分解

1. 为什么正交变换数值安全

酉矩阵 Q 满足 QQ=I,因此

Qx2=x2,κ2(Q)=1.

它不会放大 2-范数误差。数值线性代数中,许多算法都通过一串正交/酉变换逐步制造零元素,同时保留长度与谱结构。

2. Householder 反射

给定非零向量 v

H=I2vvvv

满足 H=HH2=I。它在 v 方向取负,在 v 上保持不变。

为了把 x 映到坐标轴方向,选择

v=xαe1,|α|=x2.

α 的相位/符号应避免 x1α 发生消去。这一细节决定实现是否稳定。

实数情形可取

α=sign(x1)x2,v=xαe1.

这样 v1=x1α 是两个同号量的相加,不会灾难性消去。程序常存储 τ=2/(vv),通过

Hy=yv(τvy)

施加反射,而不形成 H

3. Givens 旋转

Givens 旋转只改变两个坐标。实数情形中选择 c,s 使

(cssc)(ab)=(r0).

不要直接计算 a2+b2;应使用缩放良好的 hypot 型实现,避免溢出和下溢。

Householder 一次清除一整段向量,适合稠密批处理;Givens 一次清除一个元素,适合稀疏矩阵、在线更新和 Hessenberg/QR 迭代。

4. Householder QR

ACm×nmn,依次对每列的活动子向量做反射:

HnH1A=(R0).

于是

A=Q(R0),Q=H1Hn.

实际程序通常只存每个 Householder 向量,不显式形成 Hk 或完整 Q

5. Gram-Schmidt 的数值差别

经典 Gram-Schmidt(CGS)用

qk(IQk1Qk1)ak.

改进 Gram-Schmidt(MGS)则逐个应用投影修正。精确算术中二者等价;浮点算术中,MGS 通常更能保持正交性。若向量几乎线性相关,可以再正交化一次。

Householder QR 的正交性最可靠;MGS 更适合列向量逐个到达的 Krylov 过程。

更细的典型估计是:CGS 的正交性损失可能达到 O(uκ(A)2),MGS 通常为 O(uκ(A))。做第二遍正交化的 CGS2/MGS2 在未发生数值秩亏时可把正交误差恢复到 O(u) 量级。

6. Arnoldi 是动态 QR

Krylov 子空间

Km(A,v)=span{v,Av,,Am1v}

的幂向量会迅速趋于线性相关。Arnoldi 过程不显式形成这些幂,而是每步计算 w=Avk,再对已有基做 MGS,得到

AVm=Vm+1H¯m=VmHm+hm+1,mvm+1em.

Hm 为上 Hessenberg 矩阵。若 A=A,递推缩短为 Lanczos 三项递推。

7. 薄 QR、完整 QR 与唯一性

mnA 满列秩时,薄 QR 为

A=Q1R,Q1Cm×n,Q1Q1=I.

补齐正交基可得完整 Q=[Q1,Q2]。若要求 R 的对角元为正实数,则薄 QR 唯一;否则每列可以乘一个单位模相位并在 R 中抵消。

Householder QR 的主项运算量为

2mn223n3,

而显式形成完整 Q 还会增加成本。许多任务只需要把 Q 作用到一个向量,因此应保留紧凑反射表示。

8. Givens 的稳定构造与局部更新

a,b,目标是选 c,s,r 使

ca+sb=r,sa+cb=0,c2+s2=1.

若直接算 r=a2+b2a2b2 可能溢出。可先按 max(|a|,|b|) 缩放,或调用 hypot。Givens 只触及两行/两列,所以加入一行观测、删除一个元素或追赶 Hessenberg 凸起时尤其合适。

9. QR 的后向稳定性

Householder QR 的计算结果可以解释为

A+ΔA=Q^R^,ΔAuA,

Q^ 接近正交。需要区分两件事:分解残差小与 Q 正交性好。Gram-Schmidt 可能有很小的 AQR,但 QQI 很大;因此测试 QR 实现时必须同时报告两项。

10. 自检

  • [ ] 能证明 Householder 矩阵既 Hermite 又酉。
  • [ ] 知道构造反射时如何选符号避免消去。
  • [ ] 能比较 Householder 与 Givens 的使用场景。
  • [ ] 能解释 Arnoldi 为何得到上 Hessenberg 矩阵。
  • [ ] 知道 CGS、MGS 与二次正交化的误差差别。
  • [ ] 会同时检查 QR 残差和正交性。

下一章:最小二乘与正则化