矩阵分解

QR 分解(再探)

你在第一门课中见过 A = Q R,它是 Gram-Schmidt 的矩阵形式:Q 的各列正交归一,R 是上三角。Q 的各列是逐列构造出来的、A 列空间的一组正交归一基。这幅图景是对的,但其背后的计算值得再看一眼。

经典 Gram-Schmidt 在数值上很脆弱。逐步减去投影会累积舍入误差,算出的 Q 各列会偏离正交性,有时偏得很厉害。现代的 QR 计算方式根本不去正交化 A 的各列,而是从左侧对 A 施加一连串正交变换,每次把一列的次对角部分置零,直到剩下的就是 R;累乘起来的变换便构成 Q。

这些正交变换就是 Householder 反射(默认方式,整列反射)或 Givens 旋转(一次处理一个元素,适合稀疏或已近三角的矩阵)。由于每一步都是精确的正交映射,长度和角度都被保持,舍入误差不会被放大。结果是后向稳定的:算出的 Q 与 R 所分解的矩阵非常接近 A。

QR 是最小二乘的正确工具。用正规方程求解 min ||A x - b|| 会把条件数平方,而分解 A = Q R 再解 R x = Q^T b 则完全避免了这种平方。QR 还驱动求特征值的 QR 算法,在那里它被反复迭代,把矩阵推向三角形式。

min ||A x - b|| -> A = Q R, solve R x = Q^T b

QR 求解最小二乘,不会像正规方程那样把条件数平方。

同一种分解,不同的引擎。Gram-Schmidt 讲清思想;Householder/Givens 让它在数值上可信。实际计算中务必优先用后者。

又称
orthogonal-triangular factorizationA = QRQR 分解