我正在用 C 编写代码,它需要 Matlab 的 '\' 命令等效于 AX=B 形式的线性系统,其中 A 是 NxN 矩阵,X, B 是 Nx1 向量 - 即执行 X=A\ 的代码经过优化以识别它的 B 将接收对称正定稀疏矩阵。我想知道 C 中是否有任何开源代码可以执行此操作。
开源线性代数库
计算科学
线性代数
线性求解器
矩阵
C
2021-12-07 18:24:45
1个回答
如果您想要直接求解器,CHOLMOD绝对是首选。这是 MATLAB 和 Julia 使用正定稀疏矩阵求解 A\b 的方法,可能还有许多其他矩阵。
但是,您可能不想对大型稀疏矩阵使用直接求解器。由于直接求解器是,随着问题的扩大,它们往往表现不佳。相反,人们使用迭代方法来迭代获得解决方案解决方案在哪里作为迭代次数.
例如,由于您的矩阵是正定矩阵,因此共轭梯度方法非常适合该问题。如果您不想要整个库,那么有很多像这样的实现。但是还有多重网格方法和各种其他的东西。有一个完整的 CSSE 问题专门用于选择正确的方法。如果你想要一个库,可以很容易地切换到不同的求解器并查看哪个最快,试试PetsC(我链接了显示所有求解器的页面)。如果您要花一些时间并且性能确实很重要,那么我肯定会选择 PetsC。
其它你可能感兴趣的问题