QR分解在求解超定线性方程组中的应用
我将为您讲解如何使用QR分解来求解超定线性方程组,这是一个在数据拟合、信号处理和机器学习等领域非常重要的线性代数算法。
问题描述
考虑一个超定线性方程组:\(A\vec{x} = \vec{b}\),其中:
- \(A\) 是一个 \(m \times n\) 的矩阵,且 \(m > n\)(即方程数量多于未知数数量)
- \(\vec{b}\) 是一个 \(m \times 1\) 的向量
- \(\vec{x}\) 是一个 \(n \times 1\) 的未知向量
由于方程数量多于未知数,这个方程组通常没有精确解。我们的目标是找到一个解 \(\vec{x}\) 使得残差向量 \(\vec{r} = \vec{b} - A\vec{x}\) 的2-范数最小,即求解最小二乘问题:
\[ \min_{\vec{x}} \|\vec{b} - A\vec{x}\|_2 \]
解题步骤
第一步:理解QR分解的基本概念
QR分解是将矩阵 \(A\) 分解为两个矩阵的乘积:
\[ A = QR \]
其中:
- \(Q\) 是一个 \(m \times m\) 的正交矩阵(满足 \(Q^T Q = I\))
- \(R\) 是一个 \(m \times n\) 的上三角矩阵(下半部分都是零)
对于超定系统,我们通常使用经济型QR分解:\(Q\) 取前 \(n\) 列形成 \(m \times n\) 矩阵,\(R\) 取前 \(n\) 行形成 \(n \times n\) 上三角矩阵。
第二步:将最小二乘问题转化为QR分解形式
将 \(A = QR\) 代入残差表达式:
\[ \|\vec{b} - A\vec{x}\|_2 = \|\vec{b} - QR\vec{x}\|_2 \]
利用正交矩阵保持向量长度不变的性质(\(\|Q\vec{y}\|_2 = \|\vec{y}\|_2\)),我们得到:
\[ \|\vec{b} - QR\vec{x}\|_2 = \|Q^T\vec{b} - Q^TQR\vec{x}\|_2 = \|Q^T\vec{b} - R\vec{x}\|_2 \]
第三步:分割矩阵和向量
将 \(Q^T\vec{b}\) 分割为两部分:
\[ Q^T\vec{b} = \begin{bmatrix} \vec{c} \\ \vec{d} \end{bmatrix} \]
其中:
- \(\vec{c}\) 是前 \(n\) 个元素组成的向量
- \(\vec{d}\) 是剩余 \(m-n\) 个元素组成的向量
同时,\(R\) 可以写为:
\[ R = \begin{bmatrix} R_1 \\ 0 \end{bmatrix} \]
其中 \(R_1\) 是 \(n \times n\) 的上三角矩阵。
第四步:简化最小二乘问题
现在残差表达式变为:
\[ \|Q^T\vec{b} - R\vec{x}\|_2 = \left\| \begin{bmatrix} \vec{c} \\ \vec{d} \end{bmatrix} - \begin{bmatrix} R_1\vec{x} \\ 0 \end{bmatrix} \right\|_2 = \left\| \begin{bmatrix} \vec{c} - R_1\vec{x} \\ \vec{d} \end{bmatrix} \right\|_2 \]
向量的2-范数平方为:
\[ \|\vec{c} - R_1\vec{x}\|_2^2 + \|\vec{d}\|_2^2 \]
第五步:求解最优解
最小化这个表达式时,只有第一部分 \(\|\vec{c} - R_1\vec{x}\|_2^2\) 依赖于 \(\vec{x}\),而第二部分 \(\|\vec{d}\|_2^2\) 是常数。因此,最小化问题简化为:
\[ \min_{\vec{x}} \|\vec{c} - R_1\vec{x}\|_2 \]
由于 \(R_1\) 是上三角矩阵,这个方程组可以通过回代法精确求解:
\[ R_1\vec{x} = \vec{c} \]
第六步:算法实现步骤
- 对矩阵 \(A\) 进行QR分解:\(A = QR\)
- 计算 \(\vec{y} = Q^T\vec{b}\)
- 提取 \(\vec{y}\) 的前 \(n\) 个元素得到 \(\vec{c}\)
- 解上三角系统 \(R_1\vec{x} = \vec{c}\)(通过回代法)
- 得到最小二乘解 \(\vec{x}\)
第七步:计算残差
最小残差为 \(\|\vec{d}\|_2\),即 \(\vec{y}\) 的后 \(m-n\) 个元素的2-范数。
总结
QR分解方法通过将原始问题转化为易于求解的上三角系统,为超定线性方程组提供了稳定可靠的数值解法。相比直接解法,QR分解具有更好的数值稳定性,特别适用于病态问题。这种方法在实际工程和科学计算中得到了广泛应用。