详细介绍:稀疏Ax=b超静定方程的常用解法介绍

对于稀疏的超定线性方程组Ax = b(其中 A ∈ ℝᵐˣⁿ,m > n,即方程个数多于未知数个数),由于通常不存在精确解,我们寻求最小二乘意义下的最优解:

min ‖Ax - b‖₂²

当矩阵 A 是大型稀疏矩阵几种常用解法:就是时,直接法(如QR分解、SVD)计算开销大,因此常用迭代法或基于稀疏结构的优化算法。以下

1. 正规方程法 (Normal Equations)

将最小二乘难题转化为求解正规方程:

AᵀA x = Aᵀb

  • 优点:转化为对称正定平台(若 A 列满秩),可用共轭梯度法(CG)求解。
  • 缺点:条件数 κ(AᵀA) = [κ(A)]²,可能严重病态,数值不稳定。
  • 适用场景:A 特别稀疏且 AᵀA 仍保持良好稀疏结构时。

求解方式: 使用 共轭梯度法 (Conjugate Gradient, CG)迭代求解 AᵀA x = Aᵀb,无需显式构造 AᵀA,只需矩阵-向量乘法操作。

2. LSQR 算法

由 Paige 和 Saunders 提出,是求解稀疏最小二乘问题的首选迭代法之一。

  • 基于 Lanczos 双正交化过程,将原问题投影到低维 Krylov 子空间。
  • 求解 min ‖Ax - b‖ 的等价障碍。
  • 优点
    • 数值稳定(类似 SVD 的行为)
    • 帮助预处理(Preconditioning)
    • 内存高效,适合大型稀疏系统
    • 自动估计残差和解的误差
  • 收敛性好,尤其适用于病态或条件数大的问题。

公式本质: 通过 bidiagonalization 构造小型 bidiagonal 系统,再求其最小二乘解。

3. LSMR 算法

与 LSQR 类似,但更适用于ill-conditioned 问题。

  • 同样基于 Golub-Kahan-Lanczos 过程。
  • 求解的是相同最小二乘挑战,但迭代方向更优。
  • 优点:比 LSQR 收敛更稳定,尤其当 ‖r‖ 不易减小时。

LSMR 和 LSQR 都是 Krylov 子空间方法,广泛用于科学计算库(如 SciPy、MATLAB)。

4. 预处理共轭梯度法(PCG on Normal Equations)

若使用正规方程 AᵀA x = Aᵀb,可引入预处理器 M ≈ AᵀA来加速收敛。

  • 常用预处理器:
    • 对角预处理(Jacobi):M = diag(AᵀA)
    • 不完全 Cholesky 分解(IC)
    • 代数多重网格(AMG)等
  • 通过预处理共轭梯度法(PCG)求解,仅需稀疏矩阵乘法。

5. QR 分解(稀疏版本)

对稀疏 A 进行稀疏 QR 分解

A = QR

其中 Q ∈ ℝᵐˣᵐ 正交,R ∈ ℝᵐˣⁿ 上三角(或梯形)。

则最小二乘解为:
x = R₁⁻¹ (Q₁ᵀ b)
其中 R₁ 是 R 的前 n 行 n 列上三角块,Q₁ 是 Q 的前 n 列。

  • 挑战:稀疏 QR 分解需进行列选主元(列排序)以减少填充(fill-in)。
  • 工具:SuiteSparse、SPQR(针对稀疏最小二乘)等库给予高效建立。

6. 奇异值分解(SVD)与截断 SVD

对 A 进行 SVD:A = UΣVᵀ

最小二乘解:x = V Σ⁺ Uᵀ b

  • 优点:最稳定,能处理秩亏(rank-deficient)系统。
  • 缺点:计算昂贵,不适合超大规模稀疏矩阵。
  • 稀疏 SVD:使用 Lanczos 办法计算部分奇异值/向量(如 LSVD),适用于低秩近似。

7. 增广架构法(Augmented System)

将最小二乘问题转化为求解增广线性系统:

[ I A ] [ r ] [ b ] [ Aᵀ 0 ] [ x ] = [ 0 ]

其中 r = b - Ax 是残差。

  • 使用 Krylov 方法(如 GMRES、MINRES)配合适当的预处理求解。
  • 适合并行计算和稀疏结构。

总结对比

方法适用性稳定性内存效率是否需预处理
正规方程 + CG小中规模,良态推荐
LSQR大型稀疏,通用支持
LSMR病态问题支持
稀疏 QR中小规模稀疏
截断 SVD秩亏或降噪最高
增广系统法特殊结构或并行推荐

推荐实践

  • 首选LSQR 或 LSMR,尤其适合大型稀疏超定系统。
  • 若矩阵不太大且需要高精度:稀疏 QR 分解
  • 若存在秩亏或噪声大:考虑截断 SVD
  • 若已有良好预处理器:可尝试PCG on normal equations

这些方法在 Python(scipy.sparse.linalg.lsqr, lsmr)、MATLAB(lsqr, lsqlin)、C++(Eigen, SuiteSparse)等平台均有高效搭建。

posted @ 2026-01-29 09:24  gccbuaa  阅读(34)  评论(0)    收藏  举报