良好的线性代数包

时间:2010-10-18 15:34:00

标签: algorithm linear-algebra

我正在为项目实施一些频谱图算法。其中很大一部分是寻找大型稀疏矩阵的特征值和特征向量,以及乘法矩阵。

我的问题是,执行此操作的最快的库是什么?我一直在寻找NumPy for Python或JAMA for Java。这些是好的,还是有更好的东西?

谢谢。

2 个答案:

答案 0 :(得分:4)

Jack Dongerra是该领域公认的权威机构:FREELY AVAILABLE SOFTWARE FOR LINEAR ALGEBRA ON THE WEB

最流行的特征值计算开源库是LAPACK和EISPACK,ARPACK

答案 1 :(得分:1)

首先,您需要准确指定需要执行的矩阵运算。原因是一些图书馆非常擅长一些特殊操作。作为一个例子,Arpack擅长找到大型稀疏矩阵的最大几个特征值。 (见上面的问题)

但总的来说NumPy / SciPy是个不错的选择。它包含了几个库,如lapack,arpack和superLU,它为你提供了一个很好的python接口。

或者,您可以使用octave或MATLAB或使用c ++来包装专门执行您需要执行的操作的库。

Jama是为密集矩阵构建的,你想使用稀疏矩阵,所以Jama对你来说是一个糟糕的选择。 http://math.nist.gov/javanumerics/jama/

编辑: 我不是所有这些的专家,但据我所知,你需要找到一个使用Lanczos算法的库(http://en.wikipedia.org/wiki/Lanczos_algorithm)

Arpack库使用此算法,因此Arpack是一个不错的选择。 python库scipy.sparse.linalg包装了Arpack,因此scipy也是一个不错的选择。

记录Lapack也是为密集矩阵创建的,所以除非你的矩阵太小以至于速度无关紧要,否则Lapack是一个糟糕的选择。我相信eispack已经过时多年了。