【发布时间】: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