矩阵的条件数和舍入误差的影响

计算科学 线性代数 线性求解器 条件数 线性系统 调理
2021-12-09 03:08:58

在我的数值线性代数课中,我了解到对于某些矩阵,它可能有一个非常小的元素,大约为 0(并且与所有其他非零元素不同许多数量级),可以破坏条件的一个矩阵。

现在我想知道这实际上是如何工作的。当我们制定线性系统时

Ax=b

形成运算符需要大量数学运算A. 在求解偏微分方程的情况下,我们在计算过程中会遇到很多舍入问题,这肯定会影响A. 在我形成的一些矩阵中,我的算子是一个稀疏矩阵。我注意到一些元素A最终大约为 0,但不是实际为零,从而降低了稀疏性,并可能破坏了矩阵的条件?从理论上讲,这些计算应该评估为零,但由于四舍五入,它们最终非零。

遍历稀疏矩阵的非零元素并过滤掉所有接近零的值并将它们设置为零是一种好方法吗?我曾考虑过这样做,但我不确定这是否是正确的方法。如果我过滤的那些数字理论上不是零,实际上它们非常小怎么办?

1个回答

对于稀疏矩阵A,这是 FE、FV 或 FD 中 PDE 中运算符的离散版本,在计算实际条目之前,您确实知道您的稀疏模式。所以,你通常

  1. 计算矩阵元素A根据稀疏模式不是零
  2. 不要对已知的零做任何事情。

在您的问题中,您似乎想更进一步,分析在步骤 1 中计算的内容,并根据某些容差标准将其预先归零。实际上,当过滤某些值时,您将弄乱您的离散化运算符并解决其近似版本我不知道实际应用了这种技术,我可以想到几个原因:

  • 一些矩阵元素相对较小的事实并不一定意味着条件数会被破坏。矩阵的条件数由肯定“来自矩阵条目”的奇异值确定,但不是以这种直截了当的方式。正如@Spencer 在评论中正确指出的那样,您的小矩阵条目应该添加一个接近零的奇异值。
  • 过滤掉矩阵条目不是要走的路。可以尝试通过过滤掉奇异值来改进解决方案。简而言之:计算 SVD 分解A,将其截断一些容差,解决问题。但是,这通常适用于不适定问题(例如逆问题),并且我不知道这种方法是否适用于 PDE 的正解。
  • 过滤掉矩阵条目在技术上可用于形成预条件子。但它在线性方程组的迭代解中与您的未过滤矩阵一起使用。

所以,我当然建议检查这些条目是否真的影响矩阵的条件数(这不太可能)。并且选择不同的离散化方案(几何/算子)可能是一条更有希望的路线。