我想确定一个大型非对称矩阵的谱半径,其主要特征值是一对复共轭。我的第一个直觉是在复平面中使用具有起始向量我确实记得,当主要特征值很复杂时,这种方法往往会遇到麻烦,而且我的数值实验确实似乎与这种评估一致。有没有办法可以修改幂迭代以收敛到复平面中的两个主要特征值之一?使用arnoldi算法确定光谱半径是否更可取?
当主要特征值是复共轭时估计光谱半径
计算科学
特征值
2021-12-05 22:16:42
1个回答
在存在多个相同幅度的主要特征值时,幂方法确实不会收敛。(如果您遵循证明,您可以看到迭代将越来越接近主要特征向量所跨越的子空间,但不会接近该特征空间中的任何特定向量)。
重新启动的 Arnoldi 方法实际上是可行的方法,但它可以相当简化,因为您只对主要特征值感兴趣。回想一下,Arnoldi 方法包括计算酉矩阵(由对于某个给定的向量),然后解决的较小特征值问题(利用它是上 Hessenberg 形式的事实)。
现在的想法是每隔第二步重新开始,即,给定一个迭代跨度的正交基(因为被假定为归一化,你只需将与正交化)。由于投影方法最接近极值特征值,因此投影矩阵的特征值将收敛到主要特征值的复共轭对。事实上,由于您只对两个特征值之一感兴趣,您可以只取的瑞利商;完整的迭代(从一个归一化的复数向量开始)是x
w = A*x;
l = w'*x;
w = w-l*x;
x = w/norm(w);
其中l收敛到主要特征值之一。
(这是 Saad 的书Numerical Methods for Large Eigenvalue Problems中的问题 P-4.2 )。
编辑:保罗明确询问了幂方法,但为了以后的读者,我应该提醒的是,上述方法仅在是实数并且实际上具有一对复共轭主导特征值时才有效。如果这不是先验已知的,最好进行几次幂迭代(使用真正的起始向量),对最后两次迭代进行正交归一化,计算投影矩阵的特征值,并在必要时重复:
for k = 1:kmax
x = w/norm(w);
w = A*x;
end
w = w-(x'*w)*x;
w = w/norm(w);
Q = [x,w];
l = max(eig(Q'*A*Q));
(取决于稠密线性代数的可用例程,由于 Krylov 方法的更好收敛性,这对于原始问题甚至可能更快。事实上,如果您可以访问 ARPACK 或等效的东西,eigs(A,1)(或其等效物)将很难被击败,特别是如果您需要高精度。)
其它你可能感兴趣的问题