问题 我可以使用Lapack计算大稀疏矩阵的特征值和特征向量吗?


如果我有一个1000×1,000的方阵,那么Lapack可以计算出这个矩阵的特征向量和特征值吗?如果可以花多长时间?那么10000×10,000矩阵甚至1,000,000×1,000,000矩阵呢?

请注意,这些将是主要由0填充的稀疏矩阵(矩阵将是代表社交网络的图形)。 Lapack中是否有处理稀疏矩阵的特殊程序?我看到了Arpack的建议。但是这可以计算非常大的矩阵吗?


2863
2017-07-20 18:50


起源

我在英特尔MKL中使用LAPACK用于同样的目的。通常我的计算是矩阵n = 20k,m = 100m到1m之间。计算特征值非常快,如果你还需要所有的特征向量,在快速PC上需要大约30分钟(i7-2600,4核)。如果你有16GB内存,内存不是问题。 - mete


答案:


LAPACK没有为稀疏矩阵内置特殊支持,但ARPACK确实如此。根据您计划运行此计算机的机器,这可能会排除使用LAPACK,因为对于非常大的矩阵,可能会耗尽内存。看到 http://www.netlib.org/utk/people/JackDongarra/la-sw.html 有关各种线性代数库的摘要。

如果没有你期望的矩阵的详细信息(对称的矩阵会快很多倍),你计划运行什么处理器,你有多少可用内存,就没有办法给你一个有意义的估计这些计算需要多长时间。等等

根据您的其他问题,我建议坚持使用MATLAB。它具有稀疏矩阵支持,一般适用于线性代数。


9
2017-07-20 18:57





如果你的矩阵很稀疏,你可能最好使用a 稀疏矩阵 包。请参阅此StackOverflow 文章 了解更多信息。

使用lapack,您可以在几秒钟内完成1000 x 1000(取决于您的机器)。 10000 x 10000将花费1000倍,因为算法都倾向于O(n ^ 3)。


3
2017-07-20 19:02





Lapack只支持密集和带状矩阵(不支持一般稀疏矩阵)。因此,除非您的稀疏矩阵被绑定(从您的描述中听起来它通常是稀疏矩阵,通常存储在压缩行存储方案中),然后lapack不是您想要使用的。

对于大型稀疏矩阵,Arpack将是一个很好的起点。


1
2017-07-20 18:55