计算与最大特征值相对应的密集矩阵特征向量的最有效方法是什么?


10

我有一个密集的实对称方阵。尺寸约为1000x1000。我需要计算第一个主成分,并想知道这样做的最佳算法是什么。

看来MATLAB使用了Arnoldi / Lanczos算法(用于eigs)。但是通过阅读它们,我不确定它们是否比简单的幂迭代有任何优势,因为我的矩阵不是稀疏的,并且我只对第一个特征向量感兴趣。

任何建议在这种情况下最快的算法是什么?


1
在我的计算机上,在随机生成的1000 X 1000对称矩阵上,R中的“本征”函数花了大约一秒钟来计算所有本征值和向量,并将其四舍五入。您的里程可能会有所不同,但是我怀疑您选择的算法在这样的时间上是否会有所不同。

是的,当然是这样。我并不真正在意让程序运行得更快。我很好奇,是否提到的更复杂的技术在此用例中也被认为是优越的(密集,仅是第一特征向量),或者对于稠密矩阵是否存在不同的技术。

您是指对应于最大或最小特征值的特征向量吗?听起来您想要前者。
杰克·普尔森

是的,特征向量对应于最大幅度的特征值。
米卡·菲舍尔

Answers:


12

最快的方法可能取决于矩阵的频谱和正态性,但在所有情况下,Krylov算法都应严格优于幂迭代。GW Stewart在矩阵算法,第II卷,本征系统的第3章第4章中对此问题进行了很好的讨论:

幂方法基于以下观察结果:如果具有显性本征对,则在u的适度限制下,向量A k u会生成对显性本征向量的越来越精确的近似值。但是,在每个步骤中,幂方法仅考虑单个向量A k u,这等于丢弃包含在先前生成的向量中的信息。事实证明,这些信息是有价值的……”一个ü一个ķü一个ķü

并且他继续表明,对于第i个对角线值设置为0.95 i(从i = 0算起)的对角矩阵,经过25次迭代,Krylov子空间捕获的主要特征向量比其好八个数量级。功率迭代。100×100一世.95一世一世=0


嗯,我以为当人们只想要一些特征向量时,MRRR现在就是标准方法了……
JM

ķØķñ2+ķ2ñ+ķ3ķñ

我知道了; 不知何故,我觉得您在做Krylov之前首先需要对角线化。谢谢!
JM

Lanczos实际上正在逐步建立所说的三对角矩阵。
杰克·普尔森

5

幂迭代是最简单的,但是如上所述,如果矩阵非常不正常,则收敛可能慢。您会遇到“驼峰”现象,在渐近行为开始之前,序列似乎会发生许多次迭代而发散。

由于矩阵是对称的,因此可以考虑RQI迭代,在对称情况下会产生三次收敛:http : //en.wikipedia.org/wiki/Rayleigh_quotient_iteration

使Arnoldi或Lanczos迭代非常好的原因(至少在我看来,但我不研究数值线性代数)是因为它们非常通用。通常可以控制它们为您提供哪些特征值,以及获得多少特征值。在对称情况下尤其如此(如果矩阵确定,则更好)。对于对称问题,它们非常可靠。作为黑匣子,它们可以很好地工作,但是它们也很容易接受新的问题信息,例如解决涉及矩阵的系统的能力。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.