SVD用于寻找50x50矩阵的最大特征值-我是在浪费大量时间吗?


13

我有一个程序,通过对所有矩阵进行奇异值分解来计算许多真实的对称50x50矩阵的最大特征值。SVD是程序中的瓶颈。

是否存在可以更快地找到最大特征值的算法,或者对这部分进行优化不会带来太大的投资回报?


您能否提供有关矩阵的更多信息,例如,是否了解它们的结构,特征值的范围或彼此之间的相似性?
Pedro

这是协方差矩阵()。测试表明,除了5个左右的最大特征值外,其他所有特征值均接近于零,并且最大特征值至少比第二个大约20%。由于许多特征值接近零,因此我认为范围不重要吗?可以将其调整为任意范围。我目前使用的比例尺范围为150〜200。XXT
2012年

而且,矩阵不是很接近奇异,因此SVD问题的条件很好。
2012年

由于是对称且正(半)定的,因此可以使用Cholesky因式分解而不是SVD。与SVD相比,Cholesky因式分解所需的触发器要少得多,但作为一种精确的方法,仍然需要O n 3触发器。XXTO(n3)
2012年

@Anna:您是否尝试过这里提出的许多方法?我很想知道哪种方法最适合您……
Pedro

Answers:


12

根据最大特征值所需的精度,可以尝试使用Power Iteration

对于您的特定示例,我将尽量不明确地形成,而是在每次迭代中计算x X X T x 。计算A将需要On 3运算,而矩阵向量乘积仅需要On 2A=XXTxX(XTx)AO(n3)O(n2)

收敛速度取决于最大两个特征值之间的距离,因此这并非在所有情况下都是一个好的解决方案,


1
如果最大特征值比下一个大20%,那么幂次迭代将很快收敛(所有其他特征值在每次迭代中都会衰减5/6,因此,每13次迭代将得到一个数字。)
Wolfgang Bangerth

2
Krylov子空间方法严格优于幂方法,因为它们包含幂次迭代的向量具有相同的迭代次数。
Jack Poulson 2012年

1
@JackPoulson:是的,但是每次迭代的计算成本都更高...对于这么小的问题,真的值得吗?
Pedro

@Pedro:当然,矩阵需要二次功,相比之下,瑞利商特征分解和随后的扩展是微不足道的。
Jack Poulson 2012年

1
代码费用?由于@JackPoulson提出了这个问题,B。Parlett 等人(1982年)(“使用Lanczos算法估计最大特征值”)比较幂方法,幂方法+ Aitken加速度以及以Lanczos为目标的最大特征值应用对称(或Hermitian)位置。def。矩阵。他们得出结论,即使需要适度的精度(第一个特征值相对于第二个特征值),Lanczos方法也更有效,并且在避免失会聚方面效果更好。
hardmath 2012年


4

A=XXTμAμIA

||Ax||/||x||λ1[0,56λ1]A512λ1I712λ1[512λ1,512λ1]

AμIλ1μ

AμI(AμI)x=X(XTx)μxO(n2)


这似乎需要对第二大特征值的大小有一个很好的了解。在这种情况下,您如何估算?
2012年

λ1|λ2|/|λ1||λ2|/|λ1|λ2λ1如果需要的话。我建议您在类似Anna这样的案例中在“问题”下方的评论中看到什么好处。
hardmath 2012年
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.