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=a1∥a1∥\mathbf{q}_1 = \frac{\mathbf{a}_1}{\|\mathbf{a}_1\|}。
  2. 对于 k=2,3,…,nk = 2, 3, \ldots, n,计算Q的第 kk 列 qk\mathbf{q}_k:
    • 计算 uk=ak−∑j=1k−1⟨ak,qj⟩qj\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=uk∥uk∥\mathbf{q}_k = \frac{\mathbf{u}_k}{\|\mathbf{u}_k\|}。

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

  1. 对于 i=1,2,…,ni = 1, 2, \ldots, n,计算 Rii=⟨ai,qi⟩R_{ii} = \langle \mathbf{a}_i, \mathbf{q}_i \rangle。
  2. 对于 i<ji < j,计算 Rij=⟨aj,qi⟩R_{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=ak−∥ak∥ek\mathbf{v}_k = \mathbf{a}_k - \|\mathbf{a}_k\| \mathbf{e}_k,其中 ek\mathbf{e}_k 是第 kk 个标准基向量。
    • 计算 Hk=I−2vkvkTvkTvkH_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,qi⟩R_{ii} = \langle \mathbf{a}_i, \mathbf{q}_i \rangle。
  2. 对于 i<ji < j,计算 Rij=⟨aj,qi⟩R_{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/math/qr/
作者
Biscuit
发布于
2026-05-15
许可协议
CC BY-NC-SA 4.0
逼近
收敛与终止条件