707 字
4 分钟
QR分解
2026-05-15
无标签

对于一个矩阵 AA,我们可以将其分解为一个正交矩阵 QQ 和一个上三角矩阵 RR 的乘积,即 A=QRA = QR。这种分解被称为QR分解

QQ : 是一个正交矩阵,满足 QTQ=IQ^T Q = I,其中 II 是单位矩阵。列向量是 Col(A)Col(A) 的一组标准正交基 (正交+模长为1)。

RR : 是一个上三角矩阵,包含了 AA 的列向量在 QQ 的列向量上的坐标。对角线元素 RiiR_{ii}AA 的第 ii 列向量在 QQ 的第 ii 列向量上的投影(标量投影,可正可负)。Rii=Projqiai=ai,qi=qiTaiR_{ii} = Proj_{q_i} a_i=\langle \mathbf{a}_i, \mathbf{q}_i \rangle=q_i^T \mathbf{a}_i

存在性(恒成立):对于任何实矩阵 AA,都存在一个正交矩阵 QQ 和一个上三角矩阵 RR 使得 A=QRA = QR

唯一性条件:如果 AA 是一个满秩矩阵,那么 QR分解是唯一的。

QR分解不唯一:若允许R的对角元为负,可通过右乘对角矩阵 ±1\pm 1 改变符号。

对于满足唯一性的矩阵 AA,有如下等价条件:

  1. AA 的列向量线性无关。
  2. AA 的秩等于列数。
  3. RR 的对角线元素全非零且为正
  4. RR 可逆

QR分解的计算方法#

QR分解的计算方法主要有两种:Gram-Schmidt正交化Householder变换

Gram-Schmidt正交化#

Gram-Schmidt正交化是一种逐步构造正交矩阵 QQ 的方法。对于矩阵 AA 的列向量 a1,a2,,an\mathbf{a}_1, \mathbf{a}_2, \ldots, \mathbf{a}_n,我们可以通过以下步骤构造 QQ

  1. 初始化 QQ 的第一列为 q1=a1a1\mathbf{q}_1 = \frac{\mathbf{a}_1}{\|\mathbf{a}_1\|}
  2. 对于 k=2,3,,nk = 2, 3, \ldots, n,计算Q的第 kkqk\mathbf{q}_k
    • 计算 uk=akj=1k1ak,qjqj\mathbf{u}_k = \mathbf{a}_k - \sum_{j=1}^{k-1} \langle \mathbf{a}_k, \mathbf{q}_j \rangle \mathbf{q}_j
    • uk\mathbf{u}_k 归一化得到 qk=ukuk\mathbf{q}_k = \frac{\mathbf{u}_k}{\|\mathbf{u}_k\|}

对于 RR 的计算,我们可以通过以下步骤得到:

  1. 对于 i=1,2,,ni = 1, 2, \ldots, n,计算 Rii=ai,qiR_{ii} = \langle \mathbf{a}_i, \mathbf{q}_i \rangle
  2. 对于 i<ji < j,计算 Rij=aj,qiR_{ij} = \langle \mathbf{a}_j, \mathbf{q}_i \rangle
  3. 对于 i>ji > j,设置 Rij=0R_{ij} = 0

Householder变换#

Householder变换是一种通过反射来构造正交矩阵 QQ 的方法。对于矩阵 AA 的列向量 a1,a2,,an\mathbf{a}_1, \mathbf{a}_2, \ldots, \mathbf{a}_n,我们可以通过以下步骤构造 QQ

  1. 对于 k=1,2,,nk = 1, 2, \ldots, n,计算 Householder矩阵 HkH_k

    • 计算 vk=akakek\mathbf{v}_k = \mathbf{a}_k - \|\mathbf{a}_k\| \mathbf{e}_k,其中 ek\mathbf{e}_k 是第 kk 个标准基向量。
    • 计算 Hk=I2vkvkTvkTvkH_k = I - 2 \frac{\mathbf{v}_k \mathbf{v}_k^T}{\mathbf{v}_k^T \mathbf{v}_k}
  2. AA 乘以 HkH_k 得到新的矩阵 Ak=HkAA_k = H_k A

  3. 重复步骤 1 和 2,直到得到一个上三角矩阵 RR

对于 RR 的计算,我们可以通过以下步骤得到:

  1. 对于 i=1,2,,ni = 1, 2, \ldots, n,计算 Rii=ai,qiR_{ii} = \langle \mathbf{a}_i, \mathbf{q}_i \rangle
  2. 对于 i<ji < j,计算 Rij=aj,qiR_{ij} = \langle \mathbf{a}_j, \mathbf{q}_i \rangle
  3. 对于 i>ji > j,设置 Rij=0R_{ij} = 0

QR分解的应用#

1.迭代求解特征值和特征向量#

参考特征值和特征向量中的QR算法部分。

QR分解
https://biscuit0613.github.io/posts/lineralgebra/qr/
作者
Biscuit
发布于
2026-05-15
许可协议
CC BY-NC-SA 4.0