13

如果我有一个 1,000 x 1,000 的方阵,Lapack 是否可以计算该矩阵的特征向量和特征值?如果可以的话,需要多长时间?另外,对于 10,000 x 10,000 矩阵,甚至 1,000,000 x 1,000,000 矩阵又如何呢?

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

4

3 回答 3

10

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

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

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

于 2010-07-20T18:57:35.623 回答
3

如果您的矩阵是稀疏的,那么您最好使用稀疏矩阵包。有关更多信息,请参阅此 StackOverflow文章

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

于 2010-07-20T19:02:39.333 回答
1

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

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

于 2010-07-20T18:55:36.747 回答