如何直接计算病态密集矩阵的逆矩阵

计算科学 参考请求 预处理 条件数
2021-12-07 13:34:49

我知道直接计算逆矩阵通常是个坏主意。但是,如果需要计算病态可逆密集矩阵的逆矩阵,那么我可以尝试什么?

例如,我知道缩放矩阵可能会减少它的条件数。这可能是前置条件的一个例子,但我对前置条件的理论了解不多。

我也知道计算技术可以根据矩阵的属性而变化。本网站上发布的问题(例如123)有其特定的答案,而不是一般的答案。

但是我找不到计算逆的一般原理,因为我是这个领域的新手。我应该检查矩阵的哪些属性以减少条件数?是否有任何策略或任何书籍/论文可以解释更准确的方法来直接计算逆?

(我不知道是否有一个简短的答案。请随意关闭这个问题,因为它太宽泛了。)

1个回答

尽管实际上必须计算矩阵的逆是一种相对罕见的情况,但并非所有技术都是平等创建的。

我会使用badly-condition而不是ill-condition一词。对于条件较差的矩阵,您可以选择 SVD 路由来计算逆矩阵:

A=UΣVHA1=VΣ1UH.
如果你的矩阵A实际上条件很差,你应该还能表演Σ1. 但是,您会立即看到一个问题:如果条件数很大(病态),则σ1/σN很大 (σ1,,σN是的奇异值A,构成对角矩阵的条目Σ, 在哪里σ1σ2σN)。

这种方法还可以启用(并且由于1+) 使用伪逆的概念A+

A+=VΣ+UH
现在,只有非零元素Σ是“往复的”,您可以根据一些容差(截断的 SVD)过滤掉太小的奇异值和奇异值。同样,这对原始问题的病态没有任何帮助,只是提供了一种计算应该以更准确的方式避免的东西的方法。

同样,一个更可靠的答案将是关于避免为病态问题计算逆的主题。