解决几乎对称/伴随系统的算法?

计算科学 线性代数 矩阵 稀疏矩阵 矩阵分解
2021-11-29 20:04:10

我熟悉用于求解线性方程组的 Cholesky 分解和 LU 分解。

我有一个问题,我有大型稀疏矩阵(例如,1000x1000 或更大),其中只有一两行/列(最后几行/列)破坏对称性。我知道 Cholesky 的效率几乎是 LU 的两倍,但由于这些异常行/列,我不能使用 Cholesky。

是否有另一种方法或算法可以处理这种特殊情况 - 即,利用几乎整个矩阵是自伴/对称的事实(仅此处为实数值)?

1个回答

让我们表达矩阵ARn×n我们想用它来解决线性系统

A=S+UV
在哪里S是一个对称矩阵,URn×r, 和VRr×n. 那是,UV是一个低秩更新,以解决缺乏对称性。从你的问题看来r只是 1 或 2。

伍德伯里矩阵恒等式告诉 我们

A1x=(In×nS1U(Ir×r+VS1U)1WV)S1x=(In×nWV)S1x.
现在,对称矩阵出现逆S. 在预处理步骤中,您可以计算 Cholesky 分解S和预计算W=S1U(Ir×r+VS1U)1. 注意W只需要O(rn2)计算失败,这应该可以忽略不计。

预处理后,可以求解线性系统(In×nWV)S1x. 从右到左工作,我们可以使用前/后替换来计算S1x. 然后,我们需要执行矩阵向量乘法(In×nWV). O(rn), 可以忽略不计。