如前所述,算法11.1不允许在无需完全重启的情况下更新Cayley变换的零点。我们现在介绍Davidson方法,该方法与之相反,在每次迭代中更新零点。
Davidson方法[99]是为了解决量子化学问题而开发的,其中矩阵的对角元素既大且在幅度上变化。它最初是作为微扰方法推导出来的。给定一个近似特征向量,发展出一个修正。在[335]中,Davidson方法被视为一种对角预处理方法,并被推广到其他预处理方法。我们现在给出一个算法。向量w_j是对近似特征向量y的修正。预处理器的具体形式未指定,但对于Davidson的原始方法,选择是M=(D-\theta I)^{-1}。
算法 11.2:用于广义非线性特征值问题的广义Davidson方法 (1) 选择一个预处理器 M,它可以是固定的或变化的。从 k 个正交归一基向量 v_{1}, v_{2},\ldots, v_{k} 开始,并设置 j=k。 (2) 利用Rayleigh-Ritz过程,从张成空间 \{v_1, v_2,..., v_j\} 中计算 (y,\theta),即对感兴趣特征对的最佳近似。 (3) 为 y 找到残差向量 r=(A-\theta B)y。如果 \|r\| \leq \text{TOL},则接受该特征对,否则继续。 (4) 计算 w_j = M^{-1}r。将 w_j 相对于 v_1,...,v_j 进行正交化以形成 v_{j+1}。设置 j=j+1 并返回步骤 (2)。
接下来我们讨论Davidson方法的渐近收敛性。注意到,如果\theta和M固定,Davidson方法将发展出一个由算子M^{-1}(A-\theta B)生成的Krylov子空间。因此,一旦一个Ritz对开始收敛到一个特征对,比如说(\lambda,x),那么从那时起生成的子空间大约与由T_{\mathrm{IC}} \equiv M^{-1}(A-\lambda B)生成的Krylov子空间相同。 T_{\mathrm{IC}}具有正确的特征向量,即x,并且T_{\mathrm{IC}}对应的特征值为0。如果T_{\mathrm{IC}}的其他特征值通过预处理被压缩在1附近,那么0将被很好地分离,收敛速度将很快。
一个重要的问题是,在实践中,T_{\mathrm{IC}}的谱是否真的比原始特征值问题的谱有所改进。有这种可能性,因为在最好的情况下,如果M=(A-\mu B),我们就有了精确的Cayley变换。此外,我们知道在线性方程组的迭代求解中,预处理可以改善谱。另一方面,特征值问题的预处理可能比线性方程组更困难,因为渐近地,正在近似一个奇异矩阵(A-\lambda B)。如果\lambda不是一个外部特征值,这个矩阵也是不定的。我们将看两个例子,说明预处理如何适用于特征值问题。