我需要解决矩阵大小为 8000 的“大型”对称稀疏线性系统?
我听说过 HSL、ITPACK,但我不知道如何使用它们,我正在使用 C 语言工作。
我需要解决矩阵大小为 8000 的“大型”对称稀疏线性系统?
我听说过 HSL、ITPACK,但我不知道如何使用它们,我正在使用 C 语言工作。
您还没有告诉我们您的矩阵是否为正定矩阵 - 这是选择求解器的一个非常重要的因素。您还没有告诉我们矩阵是条件良好还是条件不佳。第三个重要问题是您是否需要一个相当准确的解决方案(例如精确到 10 位)或者是否可以接受不太精确的解决方案(例如精确到 4 位或 5 位)。
但是,对于这种小尺寸的矩阵(按照当代标准,8,000 x 8,000 非常小),您可能应该使用直接分解方法而不是迭代方法。此外,除非您有很多这样的系统要解决,否则使用稀疏直接分解方法可能不值得增加编程工作。因此,我建议以密集形式存储矩阵并使用 LAPACK(特别是因为它的 C 语言绑定了 CLAPACK 包)来求解您的方程组。
如果您愿意在编码上投入更多的时间和精力,并且如果您担心密集矩阵实现的性能,那么您可以考虑使用 SuiteSparse 包中实现的稀疏直接分解方法(例如)蒂莫西戴维斯写的。