下一节:特征向量计算与谱变换 上一级:正交收缩变换 上一节:Q^{\ast} H Q 的稳定性

IRAM中的锁定与清除

尽管锁定和清除的基本收缩思路在概念上简单明了,但在实际操作中仍需考虑诸多细节和不同策略。最终,某些临时决策在所难免。此处采用的收缩策略较为保守,但实际表现相当合理。在[420]中,计算实例表明,即便设定极低容差,也不会遗漏多重或聚集的本征值。

实施细节颇为复杂,仅通过代码展示难以传达核心思想。因此,我们将通过较高层次的文字描述来概述策略要点。

算法 7.10:IRAM的清除
(1) 每次有一个Ritz值\theta收敛时锁定它 \left(\|A x - x\theta\| < \epsilon_D\right),直到锁定了k个值。
(2) 继续迭代并锁定每个新近收敛且比现有值更“好”的Ritz值。每次锁定操作后,执行清除操作以删除最不想要但已锁定的Ritz值。因此,总是有k个锁定的Ritz值和向量就位。
(3) 继续步骤(2),直到下一个要收敛的Ritz值不是“更好”的值。用一个随机生成的向量替换第(k+1)个基向量,将其与之前的向量正交化,然后构建一个新的((k+p)-步) Arnoldi分解。重复步骤(2)。
(4) 当步骤(3)连续执行两次且没有替换现有的锁定Ritz值时,迭代停止。

实施要点:

(1)
初始阶段,我们采用(m = k+p)步阿诺尔迪分解,并每次隐式重启应用p次位移。每当锁定一个里兹值,通过减少p的有效值(即p \leftarrow p-1),可使多项式滤波器在下一个可能收敛的里兹值上具有更大的相对幅度(参见§7.6.3)。当然,此举需适度,以免滤波器次数过低而失效。若k_o为已锁定里兹值数目,则IRAM迭代在V矩阵的k_o + 1 : m列中进行,基于(m-k_o)长度的阿诺尔迪分解。此时,k的有效值为m-k_o - p_o,而p的有效值为p_o = p - k_o。这带来两个重要效果:依据§7.6.3所述,收敛速度提升,且每次隐式重启的工作量减少。

(2)
此时,亦可考虑清除所有已收敛但非目标的里兹对。

(3)
引入随机初始向量的目的在于大幅提高未发现目标本征向量方向上的成分概率。

(4)
此临时停止策略虽合理,但无法绝对保证已找到所有k个目标本征值(尤其是在存在聚集或多重本征值的情况下)。



下一节:特征向量计算与谱变换 上一级:正交收缩变换 上一节:Q^{\ast} H Q 的稳定性
Susan Blackford 2000-11-20