如果我有一个1000乘以1000的方阵,Lapack能计算出这个矩阵的特征向量和特征值吗?如果可以,需要多长时间?10,000×10,000矩阵,甚至是1,000,000×1,000,000矩阵的情况又如何呢?
请注意,这些将是主要由0填充的稀疏矩阵(矩阵将是表示社交网络的图)。Lapack中是否有处理稀疏矩阵的特殊过程?我看到了Arpack的建议。但是,这是否允许计算非常大的矩阵?
发布于 2010-07-21 02:57:36
LAPACK没有内置对稀疏矩阵的特殊支持,但ARPACK有。根据您计划运行此命令的机器,这可能会排除使用LAPACK的可能性,因为对于非常大的矩阵,您可能会耗尽内存。有关各种线性代数库的摘要,请参阅http://www.netlib.org/utk/people/JackDongarra/la-sw.html。
如果没有你期望的矩阵(对称的矩阵会快很多倍),你计划在什么处理器上运行,你有多少可用内存等细节,你就无法给出这些计算所需时间的有意义的估计。
基于你的其他问题,我建议坚持使用MATLAB。它具有稀疏矩阵支持,通常适用于线性代数。
发布于 2010-07-21 03:02:39
如果矩阵是稀疏的,那么使用sparse matrix包可能会更好。有关更多信息,请参阅此StackOverflow article。
使用lapack,您可以在几秒钟内完成1000x1000(取决于您的机器)。10000 x 10000将花费1000倍的时间,因为算法都倾向于O(n^3)。
发布于 2010-07-21 02:55:37
Lapack仅支持密集和带状矩阵(不支持常规稀疏矩阵)。因此,除非你的稀疏矩阵是带状的(根据你的描述,它听起来像是一个通用的稀疏矩阵,通常存储在压缩的行存储方案中),否则lapack不是你想要使用的。
对于大型稀疏矩阵,Arpack将是一个很好的起点。
https://stackoverflow.com/questions/3293282
复制相似问题