如果我有一个1000×1,000的方阵,那么Lapack可以计算出这个矩阵的特征向量和特征值吗?如果可以花多长时间?那么10000×10,000矩阵甚至1,000,000×1,000,000矩阵呢?
请注意,这些将是主要由0填充的稀疏矩阵(矩阵将是代表社交网络的图形)。 Lapack中是否有处理稀疏矩阵的特殊程序?我看到了Arpack的建议。但是这可以计算非常大的矩阵吗?
如果我有一个1000×1,000的方阵,那么Lapack可以计算出这个矩阵的特征向量和特征值吗?如果可以花多长时间?那么10000×10,000矩阵甚至1,000,000×1,000,000矩阵呢?
请注意,这些将是主要由0填充的稀疏矩阵(矩阵将是代表社交网络的图形)。 Lapack中是否有处理稀疏矩阵的特殊程序?我看到了Arpack的建议。但是这可以计算非常大的矩阵吗?
LAPACK没有为稀疏矩阵内置特殊支持,但ARPACK确实如此。根据您计划运行此计算机的机器,这可能会排除使用LAPACK,因为对于非常大的矩阵,可能会耗尽内存。看到 http://www.netlib.org/utk/people/JackDongarra/la-sw.html 有关各种线性代数库的摘要。
如果没有你期望的矩阵的详细信息(对称的矩阵会快很多倍),你计划运行什么处理器,你有多少可用内存,就没有办法给你一个有意义的估计这些计算需要多长时间。等等
根据您的其他问题,我建议坚持使用MATLAB。它具有稀疏矩阵支持,一般适用于线性代数。
如果你的矩阵很稀疏,你可能最好使用a 稀疏矩阵 包。请参阅此StackOverflow 文章 了解更多信息。
使用lapack,您可以在几秒钟内完成1000 x 1000(取决于您的机器)。 10000 x 10000将花费1000倍,因为算法都倾向于O(n ^ 3)。
Lapack只支持密集和带状矩阵(不支持一般稀疏矩阵)。因此,除非您的稀疏矩阵被绑定(从您的描述中听起来它通常是稀疏矩阵,通常存储在压缩行存储方案中),然后lapack不是您想要使用的。
对于大型稀疏矩阵,Arpack将是一个很好的起点。