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

时间:2010-07-20 18:50:04

标签: lapack eigenvector

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

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

3 个答案:

答案 0 :(得分:9)

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

如果没有您期望的矩阵的详细信息(对称的矩阵会快很多倍),您计划运行此处理器的处理器,您有多少内存,则无法对这些计算需要多长时间进行有意义的估计。有可用等等。

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

答案 1 :(得分:3)

如果您的矩阵很稀疏,那么最好使用sparse matrix包。有关详细信息,请参阅此StackOverflow article

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

答案 2 :(得分:1)

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

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