【问题标题】:Can I use Lapack for calculating the eigenvalues and eigenvectors of large sparse matrices?我可以使用 Lapack 计算大型稀疏矩阵的特征值和特征向量吗?
【发布时间】:2011-03-18 14:55:46
【问题描述】:

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

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

【问题讨论】:

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

标签: lapack eigenvector


【解决方案1】:

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

如果没有您期望的矩阵的详细信息(对称矩阵会快很多倍)、您打算在什么处理器上运行它、您需要多少内存,就无法对这些计算需要多长时间做出有意义的估计有空等。

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

【讨论】:

    【解决方案2】:

    如果你的矩阵是稀疏的,你最好使用sparse matrix 包。有关更多信息,请参阅此 StackOverflow article

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        • 2015-11-28
        • 2019-01-27
        • 2013-09-25
        • 1970-01-01
        • 2012-12-17
        相关资源
        最近更新 更多