求解矩形满秩方程组的方法——哪种方法最好?

计算科学 线性代数 算法 数值分析 线性求解器 条件数
2021-12-24 07:47:29

假设我有一个大而稀疏的,m×n矩阵A, 和m>nrank(A)=n. 我想解决Ax=b.

假设我知道A具有以下特点:

  • A有点对角占优势(它可能有一些边带从主对角线偏移很多,并且几行不适合带结构)。
  • A不是对称的。
  • A不是正定的。
  • rank(A)=n (存在一个独特的解决方案!)。
  • cond(ATA)相当高:10>20.
  • m仅略大于n.

假设我需要一个部分的精度10>9,或大约 9 位精度。

这个独特的问题既不是欠定也不是超定,而是涉及一个矩形矩阵。它不在最小二乘或最小长度的范围内。这限制了哪些方法适合解决它。

我知道我可以使用高斯消除、SVD(投影到零空间的正交补码)或其他一些方法。我也知道其他几种方法(例如 LU 分解)需要一个方阵,所以它们可以用来解决(ATA)x=ATb,虽然我担心高条件数ATA这些方法将是禁止的。

什么方法适合求解这个方程组,它们的相对优点/缺点是什么?

特别是:

  • 哪种方法最适合高条件数?
  • 哪种方法提供最好的准确性?
  • 哪种方法最快/最有效?
1个回答

我建议 Tim Davis 的 SPQR,它是他的 SuiteSparse 包的一部分: http ://faculty.cse.tamu.edu/davis/suitesparse.html 我相信它会合理地满足您的三个标准。