开源线性代数库

计算科学 线性代数 线性求解器 矩阵 C
2021-12-07 18:24:45

我正在用 C 编写代码,它需要 Matlab 的 '\' 命令等效于 AX=B 形式的线性系统,其中 A 是 NxN 矩阵,X, B 是 Nx1 向量 - 即执行 X=A\ 的代码经过优化以识别它的 B 将接收对称正定稀疏矩阵。我想知道 C 中是否有任何开源代码可以执行此操作。

1个回答

如果您想要直接求解器,CHOLMOD绝对是首选。这是 MATLAB 和 Julia 使用正定稀疏矩阵求解 A\b 的方法,可能还有许多其他矩阵。

但是,您可能不想对大型稀疏矩阵使用直接求解器。由于直接求解器是O(n3),随着问题的扩大,它们往往表现不佳。相反,人们使用迭代方法来迭代获得解决方案Axnb解决方案在哪里xnx作为迭代次数n.

例如,由于您的矩阵是正定矩阵,因此共轭梯度方法非常适合该问题。如果您不想要整个库,那么有很多像这样的实现。但是还有多重网格方法和各种其他的东西。有一个完整的 CSSE 问题专门用于选择正确的方法如果你想要一个库,可以很容易地切换到不同的求解器并查看哪个最快,试试PetsC(我链接了显示所有求解器的页面)。如果您要花一些时间并且性能确实很重要,那么我肯定会选择 PetsC。