下一节:求解约化特征值问题 上一级:复对称特征问题中的Lanczos方法 上一节:算法性质

算法

完整的复对称Lanczos算法(不带前瞻)陈述如下。

算法 7.17:复对称Lanczos方法

(1)  设置 \widehat{v}_1 = bv_0 = 0
(2)  对于 j = 1, 2, ...,直到收敛或 \beta_j = 0 执行以下步骤:
(3)      如果 \widehat{v}_j = 0,则设置 j = j - 1 并停止
(4)      计算 \beta_j = \sqrt{\widehat{v}_j^T \widehat{v}_j}
(5)      如果 \beta_j = 0,则设置 j = j - 1 并停止:发生故障
(6)      归一化 v_j = \widehat{v}_j / \beta_j
(7)      计算 \widehat{v}_{j+1} = A v_j
(8)      减去 \widehat{v}_{j+1} = \widehat{v}_{j+1} - v_{j-1} \beta_j
(9)      计算 \alpha_j = v_j^T \widehat{v}_{j+1}
(10)     减去 \widehat{v}_{j+1} = \widehat{v}_{j+1} - v_j \alpha_j
(11)     测试收敛性
(12) 结束循环

接下来,我们对算法7.17的几个步骤进行点评。

(3)
如果出现\hat{v}_j=0,则意味着算法已经完全耗尽了由Ab生成的Krylov序列,因此终止是自然的。事实上,在这种情况下,到目前为止生成的Lanczos向量张成一个A-不变子空间,并且Lanczos三对角矩阵的所有特征值也是A的特征值。

(5)
在实践中,如果发生所谓的“近崩溃”,即\beta_j\approx 0,也需要停止。算法的前瞻版本可以解决精确崩溃(即\beta_j = 0)和近崩溃问题;参见,例如[178,180]。

(11)
为了测试收敛性,计算复对称三对角矩阵T_j的特征值\theta_i^{(j)}i=1,2,\ldots,j,如果某些\theta_i^{(j)}足够接近A的期望特征值,则停止算法。



下一节:求解约化特征值问题 上一级:复对称特征问题中的Lanczos方法 上一节:算法性质
Susan Blackford 2000-11-20