我需要求解一个线性方程(Ax = b(,具有较大的稀疏A和多次具有差分b。因此,LU(或Cholesky,如果A是对称的(分解是非常可取的。
我正在使用犰狳库,我听说可以使用该功能:
spsolve(x, A, b, "superlu");
为了解决这样的系统。我不太关心检索 L 和 U 矩阵。然而,最重要的是,每次我调用 spsolve 时,都不会重新计算 L 和 U。
spsolve(x, A, b, "superlu")
是否存储LU分解,如果没有,有没有办法检索所述矩阵?
事实上,犰狳本质上是其他团队开发的软件的"总结"; 这对于Superlu稀疏求解器尤其正确。您要求的特征(求解具有相同矩阵但右侧不同的一系列方程组(在犰狳中可能根本不存在。您可能应该直接使用嵌入了该功能的稀疏线性求解器(不一定是 superlu(。如果您的系统非常大,因此基于分解的求解器无法应对这种情况,迭代求解器可能会这样做,在这种情况下有一个选择:由于现代 CPU 是多核的,因此可以并行运行多个独立的求解过程。以下博客中描述了一个这样的迭代求解器(您可以在那里提出问题和/或参与讨论(:http://comecau.blogspot.com/2018_09_05_archive.html