下一节:可用的软件 上一级:隐式重启Lanczos 上一节:Q^* T Q 的稳定性

锁定与清除的实现

尽管锁定和清除的基本通缩思路在概念上简单明了,但在实施过程中仍需考虑许多细节和多种策略。最终,一些临时决策是不可避免的。这里采用的通缩策略相对保守,但实际表现相当合理。在[420]中,计算示例表明,即使指定非常粗略的容差,也不会遗漏多个或聚集的本征值。

实施细节相当复杂,仅通过展示代码难以传达这些思路。因此,我们将通过较高层次的口头描述来概述策略的主要思想。

Deflation for IRLM

实现笔记:

(1)
初始时,我们使用一个(m = k+p)步的Lanczos分解,并每次隐式重启应用p个位移。每当锁定一个Ritz值时,将p的有效值减少1是有利的。这使得多项式滤波器在下一个最可能收敛的Ritz值上的相对幅值增大。(参见§4.5.4)当然,这必须限制在避免滤波器次数过低而失效的范围内。如果k_o是已锁定的Ritz值数量,IRLM迭代在V的列k_o + 1,\dots, m中进行,工作在一个m-k_o长度的Lanczos分解内。k的有效值变为m-k_o - p_op的有效值变为p_o = p - k_o。这有两个重要效果:如§4.5.4所述,收敛速度增加,每次隐式重启的工作量减少。

(2)
此时也可能希望清除所有已收敛但不需要的Ritz对。

(3)
引入随机初始向量的目的是大幅增加尚未找到的所需本征向量方向上的分量。

(4)
如果没有机会对A进行分解,这种临时的停止策略是合理的。然而,无法最终保证已找到所有k个所需本征值(特别是在聚集或多重本征值的情况下)。如果A(或更好的A-\sigma I)可以分解为对称不定分解,那么通过谱变换可以大大增强收敛性,并且可以获得惯性计数。这将提供更可靠的验证,确保已找到所有k个所需本征值。参见§4.4.3的讨论。



下一节:可用的软件 上一级:隐式重启Lanczos 上一节:Q^* T Q 的稳定性
Susan Blackford 2000-11-20