文章
合集线性代数第 8 / 8 篇

Lec 17 · 正交矩阵、Gram-Schmidt 与 QR 分解

lec17-title-orthonormal

摘要

Lec17 是正交性从"几何概念"走向"计算工具"的关键一讲。

Strang 的路线:先搞清楚 QQ 矩阵的代数性质(QTQ=IQ^TQ=I 和 QQTQQ^T 的区别),再给出最重要的计算方法——Gram-Schmidt 正交化,以及它的矩阵形式 QR 分解。这一讲直接为后续的最小二乘快速算法和特征值计算铺路。

  • Lec14: 正交的几何基础
  • Lec15: 投影
  • Lec16: 最小二乘
  • Lec17: 正交矩阵、Gram-Schmidt、QR 分解

1. 正交矩阵 QQ 的定义

在 Lec17 的语境中,QQ 的列是 标准正交向量(orthonormal vectors)。即每一列是单位向量,且列与列之间两两正交:

qiTqj={1i=j0i≠j\large q_i^T q_j = \begin{cases} 1 & i = j \\ 0 & i \neq j \end{cases}

假设 QQ 是 m×nm \times n 的,它有 nn 个列,每个列是 mm 维向量。

2. 核心性质:QTQ=IQ^TQ = I 恒成立

不管 QQ 是胖是瘦,只要列是标准正交的,QTQQ^TQ 就一定是 n×nn \times n 单位矩阵。原因:

(QTQ)ij=qiTqj=δij\large (Q^T Q)_{ij} = q_i^T q_j = \delta_{ij}

矩阵乘法 QTQQ^TQ 的第 (i,j)(i,j) 个元素,就是 QQ 的第 ii 列点乘第 jj 列。列标准正交,所以结果自然是 InI_n。这是"列标准正交"的等价代数表述,与 QQ 是否方阵无关。

3. QQTQQ^T 为什么通常不等于 II?

QQTQQ^T 是 m×mm \times m 的矩阵。它等于 ImI_m 吗?不一定。两个层面理解:

代数上看秩:

rank⁡(QQT)=rank⁡(Q)=n\large \operatorname{rank}(QQ^T) = \operatorname{rank}(Q) = n

单位矩阵 ImI_m 的秩是 mm。只有 n=mn = m(方阵)时,QQTQQ^T 才可能有满秩 mm,才可能等于 ImI_m。如果 n<mn < m,QQTQQ^T 是秩为 nn 的 m×mm \times m 矩阵,不可能是秩为 mm 的单位矩阵。

几何上看投影(Strang 特别强调的视角):

QQTQQ^T 乘到任意向量 bb 上:

QQTb=Q(QTb)\large QQ^T b = Q(Q^T b)

QTbQ^Tb 是 bb 在列空间坐标上的系数,再左乘 QQ 就是用这些坐标线性组合 QQ 的列,得到 bb 在 C(Q)C(Q) 上的 正交投影。

所以 QQTQQ^T 就是 ==到列空间 C(Q)C(Q) 的投影矩阵==:

  • 方阵 QQ(n=mn=m):列空间是整个 Rm\mathbb{R}^m,投影到整个空间 = 什么都不做,QQT=IQQ^T = I。
  • 瘦高 QQ(n<mn<m):列空间只是 Rm\mathbb{R}^m 的一个子空间,投影会丢失垂直于该子空间的分量,QQT≠IQQ^T \neq I。

4. "有标准正交列" ≠ "正交矩阵"

这是一个重要的 术语陷阱,Strang 反复强调:

有标准正交列的矩阵正交矩阵
形状m×nm \times n(通常 m≥nm \ge n)必须是方阵 m×mm \times m
QTQQ^TQ=In= I_n ✅=Im= I_m ✅
QQTQQ^T== 投影矩阵=Im= I_m ✅
逆矩阵不存在(非方阵)存在,Q−1=QTQ^{-1} = Q^T

Strang 把两种都记作 QQ,方便但容易混淆。记住:只有方阵才配叫"正交矩阵"。

5. 内积视角 vs 外积视角

QTQQ^TQ —— 内积视角: 让列向量两两做内积,得到一个"关系表"。只要列标准正交,这个表永远是满分 II。

QQTQQ^T —— 外积之和视角: QQTQQ^T 可以展开为:

QQT=q1q1T+q2q2T+⋯+qnqnT\large QQ^T = q_1 q_1^T + q_2 q_2^T + \cdots + q_n q_n^T

每一项 qiqiTq_i q_i^T 是一个 秩为 1 的外积,几何意义是"到 qiq_i 这一根轴上的投影矩阵"。nn 个投影加起来,就是到列空间的投影。

  • 方阵时:nn 根互相正交的轴恰好覆盖整个空间,投影之和 =I= I。
  • 瘦高时:轴不够多,只能撑起子空间,投影之和 ≠I\neq I。

6. Hadamard 矩阵

Hadamard 矩阵

元素只有 +1+1 或 −1-1 的方阵,且所有行(或列)都互相正交:

HHT=nI\large HH^T = nI

注意 HH 的列是正交的但不是标准正交的(长度为 n\sqrt{n} 而非 1)。1nH\large\frac{1}{\sqrt{n}}H 才是标准正交矩阵。

构造方法(西尔维斯特):

H1=[1],H2=[111−1],H2k=[H2k−1H2k−1H2k−1−H2k−1]\large H_1 = [1], \quad H_2 = \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}, \quad H_{2^k} = \begin{bmatrix} H_{2^{k-1}} & H_{2^{k-1}} \\ H_{2^{k-1}} & -H_{2^{k-1}} \end{bmatrix}

行列式:由 HTH=nIH^TH = nI,取行列式得 (det⁡H)2=nn\large(\det H)^2 = n^n,所以 det⁡H=±nn/2\large\det H = \pm n^{n/2}。

Hadamard 猜想:阶数 nn 必须是 1、2 或 4 的倍数。但反过来,是否对所有 4 的倍数都存在 Hadamard 矩阵,至今未解。

7. Gram-Schmidt 正交化

核心思想: 从一组线性无关的向量开始,通过系统性地“剥掉”新向量在已有向量上的投影,造出一组张成同一空间的正交基。

第一阶段:生成正交基

  1. 确立第一根轴:直接取 u1=v1u_1 = v_1。

  2. 打造第二根垂直轴:把 v2v_2 在 u1u_1 上的投影剥掉,剩下的误差就是第二根轴:

    u2=v2−proj⁡u1(v2)=v2−u1Tv2u1Tu1u1\large u_2 = v_2 - \operatorname{proj}_{u_1}(v_2) = v_2 - \frac{u_1^T v_2}{u_1^T u_1} u_1
  3. 打造第三根垂直轴:同时剥掉 v3v_3 在 u1u_1 和 u2u_2 上的投影:

    u3=v3−proj⁡u1(v3)−proj⁡u2(v3)\large u_3 = v_3 - \operatorname{proj}_{u_1}(v_3) - \operatorname{proj}_{u_2}(v_3)

关键:u1u_1 和 u2u_2 已经互相垂直,所以减投影的操作互不干扰。这个"剥干净"保证了 u3u_3 与前面所有轴都垂直。

第二阶段:归一化

qi=ui∥ui∥\large q_i = \frac{u_i}{\|u_i\|}
直观比喻:整理散漫的队伍
  1. 第一个人出列,以他为基准站好 → u1u_1
  2. 第二个人来了,把他身上往第一个人方向的倾斜"推"掉,只留垂直部分 → u2u_2
  3. 第三个人来了,把他身上往前两个人方向的倾斜都推掉 → u3u_3
  4. 最后所有人统一站在单位圆环上 → 归一化得到 qiq_i

计算实例:

v1=[20],v2=[11]\large v_1 = \begin{bmatrix} 2 \\ 0 \end{bmatrix}, \quad v_2 = \begin{bmatrix} 1 \\ 1 \end{bmatrix}
  1. u1=v1=[20]\large u_1 = v_1 = \begin{bmatrix} 2 \\ 0 \end{bmatrix}
  2. proj⁡u1(v2)=2×1+0×14[20]=[10]\large\operatorname{proj}_{u_1}(v_2) = \frac{2 \times 1 + 0 \times 1}{4} \begin{bmatrix} 2 \\ 0 \end{bmatrix} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}
  3. u2=v2−proj⁡=[01]\large u_2 = v_2 - \operatorname{proj} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}
  4. 归一化:q1=[10]\large q_1 = \begin{bmatrix} 1 \\ 0 \end{bmatrix},q2=[01]\large q_2 = \begin{bmatrix} 0 \\ 1 \end{bmatrix}

8. QR 分解

QR 分解就是 Gram-Schmidt 的 矩阵形式。

从 Gram-Schmidt 到矩阵: Gram-Schmidt 过程中,原始向量 aia_i 可以用新造出的 qjq_j 线性表示:

a1=r11q1a2=r12q1+r22q2a3=r13q1+r23q2+r33q3\large\begin{aligned} a_1 &= r_{11} q_1 \\ a_2 &= r_{12} q_1 + r_{22} q_2 \\ a_3 &= r_{13} q_1 + r_{23} q_2 + r_{33} q_3 \end{aligned}

其中 rij=qiTajr_{ij} = q_i^T a_j(投影系数),rjj=∥uj∥r_{jj} = \|u_j\|(正交分量的长度)。

把这些等式打包成矩阵乘法("列的组合"视角——QRQR 的每一列都是 QQ 的列的线性组合,系数来自 RR 的对应列):

A=QR\large\boxed{A = QR} [∣∣a1a2∣∣]=[∣∣q1q2∣∣][r11r120r22]\large\begin{bmatrix} | & | \\ a_1 & a_2 \\ | & | \end{bmatrix} = \begin{bmatrix} | & | \\ q_1 & q_2 \\ | & | \end{bmatrix} \begin{bmatrix} r_{11} & r_{12} \\ 0 & r_{22} \end{bmatrix}
  • QQ:列标准正交矩阵(Gram-Schmidt 的结果)
  • RR:上三角矩阵(对角线是长度,右上角是投影系数)

计算实例:

a1=[200],a2=[110]\large a_1 = \begin{bmatrix} 2 \\ 0 \\ 0 \end{bmatrix}, \quad a_2 = \begin{bmatrix} 1 \\ 1 \\ 0 \end{bmatrix}

Gram-Schmidt 得到:q1=[100]\large q_1 = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix},r11=2r_{11}=2,r12=1r_{12}=1,q2=[010]\large q_2 = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix},r22=1r_{22}=1。

A=[210100]=[100100]⏟Q[2101]⏟R\large A = \begin{bmatrix} 2 & 1 \\ 0 & 1 \\ 0 & 0 \end{bmatrix} = \underbrace{\begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 0 & 0 \end{bmatrix}}_{Q} \underbrace{\begin{bmatrix} 2 & 1 \\ 0 & 1 \end{bmatrix}}_{R}

为什么重要? 当 AA 满列秩时,RR 可逆。将 A=QRA=QR 代入正规方程 ATAx^=ATbA^TA\hat{x}=A^Tb:

RTQTQ⏟IRx^=RTQTb  ⟹  Rx^=QTb\large R^T \underbrace{Q^T Q}_{I} R \hat{x} = R^T Q^T b \implies \boxed{R\hat{x} = Q^T b}

从需要求逆的复杂方程,变成了可以直接 回代法 求解的上三角方程组!

完成

小结

  • QTQ=IQ^TQ = I:列标准正交的代数表述,恒成立。
  • QQT=IQQ^T = I:要求 QQ 是方阵,即列张满整个空间。
  • "有标准正交列" ≠ "正交矩阵":后者必须是方阵。
  • Gram-Schmidt:减投影 → 正交化 → 归一化。
  • A=QRA = QR:Gram-Schmidt 的矩阵形式,简化最小二乘计算。