【问题标题】:MATLAB: Eig algorithm and alternativesMATLAB:Eig 算法和替代方案
【发布时间】:2016-09-19 17:11:29
【问题描述】:

我正在模拟一个物理系统,我需要计算一个非常大 (~10000x10000) 矩阵的特征值和向量。 到目前为止,我已经在 MATLAB 中使用了内置的 Eig 算法,但对于大型矩阵来说它非常慢。 MATLAB 中是否有其他算法可以做得更好,或者我可以以某种方式提高 Eig 的性能?具体来说,我只需要从最小数值特征值开始的矩阵的前 100 个特征向量。有没有办法让算法只计算前 N 个特征向量和特征值以节省计算时间?当然,这仅在特征向量排序后才有效,但由于我使用的矩阵的对称性,它们似乎这样做了。

【问题讨论】:

  • 你的矩阵有什么特点吗? (稀疏、厄密等)
  • 不确定它的性能,但试试svd(x, 'econ')
  • 矩阵,称为 K,具有以下结构: K(i,i) = a K(i,i+1) = b K(i+1,i) = b K( i+N,i) = b K(i,i+N) = b 这里 N 是一个固定数,i=1...10000。它是对称的和厄米特的。
  • 即除了 5 个不同的“对角线”外,它到处都有零。我希望你能理解上面的解释。如果有帮助,它是二维拉普拉斯算子的离散化。

标签: matlab


【解决方案1】:

您的矩阵大部分为零,因此您应该将其设为稀疏矩阵。然后,您将能够使用 EIGS 计算较少数量的特征值和特征向量。

http://www.mathworks.com/help/matlab/ref/eigs.html

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多