矩阵的QR分解
重要说明:本文设计到施密特正交化,点击查看 施密特正交化 ,本文主要有AI生成
1. 核心思想与定义
QR分解 将一个矩阵 A 分解为一个正交矩阵(Orthogonal matrix)和一个上三角矩阵(Upper triangular matrix)的乘积:
其中:
Q 是一个正交矩阵(若 A 为实矩阵),即满足 QTQ=I。其列向量构成一组标准正交基。
R 是一个上三角矩阵。
维度说明:
若 A 是 m×n 的满列秩矩阵(即 rank(A)=n),则:
Q 是 m×n 的矩阵,其列正交。
R 是 n×n 的上三角可逆矩阵。
若 A 的列秩亏损,分解仍然存在,但形式略有不同(通常称为瘦QR分解(Thin QR Factorization))。
2. 为什么需要QR分解?
QR分解的核心价值在于将任意矩阵的列向量转换为一组正交的向量。这带来了许多优势:
数值稳定性:正交变换(如Householder反射)不会放大误差,使得QR分解在数值计算中非常可靠。
求解最小二乘问题:这是QR分解最重要的应用。对于超定方程组 Ax=b(无精确解),通过QR分解将其转化为 Rx=QTb。由于 R 是上三角矩阵,该方程可以高效、稳定地求解,得到最小二乘解。
计算特征值:著名的QR算法用于计算矩阵的所有特征值,它迭代地应用QR分解。
正交化:QR分解提供了一种为矩阵 A 的列空间构建一组标准正交基的方法。
3. 分解方法
主要有两种算法来计算QR分解:Gram-Schmidt正交化过程 和 Householder变换。
方法一:Gram-Schmidt正交化过程
这是最直观的方法,直接对 A 的列向量进行正交化。
步骤:
设 A=[a1,a2,...,an],我们的目标是找到一组标准正交向量 {q1,q2,...,qn} 使得:
span{a1,...,ak}ak=span{q1,...,qk},for k=1,...,n=r1kq1+r2kq2+...+rkkqk 第一步:
u1q1r11=a1=∥u1∥u1=∥u1∥ 第 k 步(k=2,...,n)**:
ukqkrjkrkk=ak−(q1Tak)q1−(q2Tak)q2−...−(qk−1Tak)qk−1=∥uk∥uk=qjTakfor j=1,...,k−1=∥uk∥ 构造 Q 和 R:
Q=[q1,q2,...,qn]
R 是一个上三角矩阵,其元素 rij 由上述过程定义:
R=r110⋮0r12r22⋮0⋯⋯⋱⋯r1nr2n⋮rnn 缺点:经典Gram-Schmidt过程在数值计算中可能不稳定(正交性会因舍入误差而丢失)。通常使用改进的Gram-Schmidt过程。
方法二:Householder变换(更常用、更稳定)
Householder变换通过一系列的反射操作,逐步将矩阵 A 的上三角部分以下的元素变为零。
思想:找到一个正交矩阵 H,使得 Hx=αe1(其中 e1 是第一个标准基向量)。这个矩阵 H 就是Householder反射矩阵。
步骤:
对于 k=1 to n:
考虑 A 的第 k 列的对角线以下部分 x=A[k:m,k]。
计算一个Householder向量 vk 和一个标量 βk,使得应用反射 Hk=I−βkvkvkT 后,能将 x 除第一个元素外的所有元素变为零。
将反射应用到 A 的右下子矩阵上:A[k:m,k:n]=Hk⋅A[k:m,k:n]。
同时,记录这些变换(如果需要显式生成 Q)。
所有变换完成后,原来的 A 就被变换成了上三角矩阵 R。
HnHn−1⋯H1A=R⟹A=(H1H2⋯Hn)R 因为Householder反射是对称且正交的(HT=H, HTH=I),所以所有反射的乘积 QT=Hn⋯H1 也是一个正交矩阵,因此 Q=H1⋯Hn,最终得到 A=QR。
优点:数值稳定性远高于Gram-Schmidt方法,是数值计算软件(如MATLAB, NumPy)中 qr() 函数使用的标准算法。
4. 例子(Gram-Schmidt过程)
设矩阵 A=120101,求其QR分解。
Step 1: 处理第一列 a1
u1∥u1∥q1r11=a1=120=12+22+02=5=∥u1∥u1=1/52/50=∥u1∥=5 Step 2: 处理第二列 a2
先减去它在 q1 上的投影:
r12u2∥u2∥q2r22=q1Ta2=[1/52/50]101=51=a2−r12q1=101−511/52/50=101−1/52/50=4/5−2/51=(4/5)2+(−2/5)2+12=16/25+4/25+25/25=45/25=535=∥u2∥u2=3554/5−2/51=4/(35)−2/(35)5/(35)=4/(35)−2/(35)5/3=∥u2∥=535 Step 3: 构造 Q 和 R
Q=[q1,q2]=1/52/504/(35)−2/(35)5/3,R=[r110r12r22]=[501/535/5] 验证:
计算 QR,结果应等于 A。(验证略)
5. 总结与对比
| 特性 | QR分解 |
|---|
| 形式 | A=QR |
| 矩阵Q | 正交矩阵(QTQ=I),其列是标准正交基。 |
| 矩阵R | 上三角矩阵。 |
| 核心思想 | 将矩阵的列向量转换为正交的向量。 |
| 主要方法 | Gram-Schmidt过程、Householder变换、Givens旋转。 |
| 最大优点 | 数值稳定性好(尤其Householder方法)。 |
| 主要应用 | 求解最小二乘问题、计算特征值(QR算法)、信号处理、模式识别。 |
简单来说,QR分解为我们提供了一种为矩阵的列空间寻找一组‘好’的(即正交的)基的方法。这种性质使得它在解决数值计算问题时非常强大和可靠。
A=QR 分解图解
A=QR 是在保持 C(A)=C(Q) 的条件下,将 A 转化为正交矩阵 Q .
在格拉姆-施密特正交化中,首先,单位化的 a1 被用作 q1 ,然后求出 a2 与 q1 正交所得到的 q2 ,以此类推.
q1=a1/∥a1∥q2=a2−(q1Ta2)q1,q2=q2/∥q2∥q3=a3−(q1Ta3)q1−(q2Ta3)q2,q3=q3/∥q3∥ 或者你也可以写作 rij=qiTaj :
a1=r11q1a2=r12q1+r22q2a3=r13q1+r23q2+r33q3 原本的 A 就可以表示为 QR :正交矩阵乘以上三角矩阵.

A 的列向量就可以转化为一个正交集合:Q 的列向量.A 的每一个列向量都可以用 Q 和上三角矩阵 R 重新构造出.
图释可以回头看 P1.
解矩阵的 QR分解是一种非常重要且应用广泛的矩阵分解方法,尤其因其数值稳定性和正交性而备受青睐。