解决稀疏线性方程组的C API库是什么?

3
我需要从一个用D编写的程序中解决一个大型稀疏线性方程组。理想情况下,我想要一个D风格接口的库,但我怀疑这样的库并不存在。然而,D可以直接访问C API。因此,请推荐一些具有以下特征的解决大型稀疏线性方程组的库:
  1. 公开了C API。

  2. 免费/开源。最好不是强制版权,但这不是硬性要求。

  3. 经过了充分测试和调试。易于设置和使用。不是由学者为了发表论文而编写,之后就完全不再维护。

3个回答

6

稀疏问题的经典库是suite-sparse。许多系统都有相关软件包,Matlab内部也使用它。


1
我还不能评论你的帖子(声望不够...)。但是我特别欣赏你对学者产出的印象。顺便说一句,SuiteSparse是由学者们开发并且正在维护。 - hpixel
我个人可以为这段代码背书。我在我的应用程序中使用它,而且我从Tim Davis那里看到的一切都是最高质量的。 - David Heffernan
我想指出,Tim Davis的代码不允许商业使用。如果您自己有一个商业产品,那么您会发现他的价格非常合理。我个人使用的是CSparse,它的性价比异常优秀。 - David Heffernan
@David:我刚刚查了一下,CSparse实际上是LGPL。 - dsimcha
好的,那么你必须要发布一个共享库,否则就得放弃你的代码。 - David Heffernan
谢谢,我成功地让它运行起来了。非常好用。 - dsimcha

1

抱歉,我混淆了我以前使用的 LAPACK 和更早之前使用的 ARPACK。

这里是 ARPACK 的链接http://www.caam.rice.edu/~kristyn/parpack_home.html: 该软件包旨在计算一般 n × n 矩阵 A 的几个特征值及其对应的特征向量。它最适合于大型稀疏或结构化矩阵。

以下是线性代数库的比较链接:

http://www.netlib.org/utk/people/JackDongarra/la-sw.html

您可以在这里找到SparseLib ++,以及在矩阵形式下提到的arpack和更多库。


不指出庞大的LAPACK中的稀疏代码,这并不是一个答案。你能编辑一下提供缺失的细节吗? - David Heffernan
@David:说得好。我现在实际上正在使用LAPACK(虽然是一个包装器,不是直接使用),而我一直认为它没有任何稀疏支持。如果我错了,我很乐意被纠正,因为这会让我的工作变得更容易。 - dsimcha
LAPACK本身不支持稀疏矩阵。Netlib存储库有许多好的选择。 - David Heffernan

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接