下一节:Jacobi-Davidson方法 上一级:带状Lanczos方法 上一节:算法

变种

针对厄米矩阵的带状Lanczos方法最初在[375]中提出。然而,这里描述的厄米带状Lanczos算法4.12有所不同,它同时使用了前j个Lanczos向量(4.28)和候选向量(4.30)来生成接下来的p_c个Lanczos向量。这使得我们只需构建j \times j矩阵T_j^{\rm {(pr)}}。而[375]中的算法则构造了前j+p_c个Lanczos向量,因此需要构建一个稍大的(j+p_c) \times j矩阵,而非T_j^{\rm {(pr)}}。这里描述的带状Lanczos方法版本最初在[177]中作为一般非对称带状Lanczos方法(在[166]中提出)的一个特例被推导出来。

如算法4.12所述的带状Lanczos方法版本,在进行所有与A的乘法运算时,都是以矩阵-向量乘积的形式进行,且每次只涉及单一向量。然而,在算法的任何阶段,也可以预先计算接下来p_c次迭代所需的p_c个矩阵-向量乘积,这可以通过一次矩阵-矩阵乘积AV来实现,其中V是一个包含p_c个向量的块矩阵。具体步骤如下:我们不执行算法4.12中的步骤(7),而是计算矩阵-矩阵乘积:

A \left[ \begin{array}{ccccc}v_j & \hat{v}_{j+1} & \hat{v}_{j+2} & \cdots & \hat{v}_{j+p_c-1}\end{array} \right].
这样我们得到了向量\hat{v}_{j+p_c} = A v_j,它用于迭代j的剩余步骤,以及向量:
A \hat{v}_{j+1}, A \hat{v}_{j+2}, \ldots, A \hat{v}_{j+p_c-1}. \tag{4.43}
在接下来的p_c-1次迭代中,我们将需要这些向量:
A v_{j+1}, A v_{j+2}, \ldots, A v_{j+p_c^{\prime}-1}. \tag{4.44}
这里,p_c^{\prime}定义为p_c减去在这接下来的p_c-1次迭代中将发生的缩减次数。特别地,如果没有任何缩减发生,则p_c^{\prime}=p_c。我们所需的矩阵-向量乘积(4.44)与我们之前计算的(4.43)并不完全相同。然而,向量(4.43)和(4.44)通过以下关系相连:
\begin{aligned} &\begin{bmatrix}A\hat{v}_{j+1} & A\hat{v}_{j+2} & \cdots & A\hat{v}_{j+p_c-1}\end{bmatrix} \\ = &\begin{bmatrix}A v_{j+1} & A v_{j+2} & \cdots & A v_{j+p_c^{\prime}-1}\end{bmatrix} T_{j+1:j+p_c^{\prime}-1,j-p_c+1:j-1}. \tag{4.45} \end{aligned}
这里,T_{j+1:j+p_c^{\prime}-1,j-p_c+1:j-1}T_{j+p_c^{\prime}-1}的子矩阵,包含行j+1,\ldots,j+p_c^{\prime}-1和列j-p_c+1,\ldots,j-1的元素。如果p_c^{\prime} \lt p_c ,(4.45)中的一些\hat{v}_k会导致缩减向量。设\hat{v}_{j_1}, \hat{v}_{j_2},\ldots, \hat{v}_{j_{p_c^{\prime}-1}}为未缩减的向量。进一步,设\tilde{T}是从T_{j+1:j+p_c^{\prime}-1,j-p_c+1:j-1}中删除对应于(4.45)中缩减向量的列得到的矩阵。根据(4.45),我们有:
\begin{bmatrix}A\hat{v}_{1} & A\hat{v}_{2} & \cdots & A\hat{v}_{j_{p'_c-1}}\end{bmatrix} = \begin{bmatrix}A v_{j+1} & A v_{j+2} & \cdots & A v_{j+p'_c-1}\end{bmatrix}\tilde{T}. \tag{4.46}
矩阵\tilde{T}是非奇异的且为上三角矩阵。因此,利用(4.46),我们可以通过预计算向量(4.43)的适当线性组合来获得(4.44)中的每个向量A v_{j+k}k=1,2,\ldots,p_c^{\prime}-1

对于厄米正定矩阵A,还有一种基于耦合递归的算法4.12的变种在[35]中被提出。这一变种的动机是观察到对于病态的厄米正定矩阵A,从Lanczos矩阵T_j^{\rm {(pr)}}得到的最小特征值可能会变为负值;参见[34,35]中的例子。在精确算术中,这是不可能的,因为A的正定性意味着T_j^{\rm {(pr)}}=V_j^{\ast} A V_j也是正定的。然而,在有限精度算术中,舍入误差可能导致算法4.12生成的矩阵T_j^{\rm {(pr)}}略微非定。这可以通过使用耦合递归来生成T_j^{\rm {(pr)}}的Cholesky因子而不是T_j^{\rm {(pr)}}本身来轻松避免。更确切地说,(4.32)中总结的递归被替换为以下形式的耦合递归:

\begin{aligned} AP_j &= V_jL_jD_j + \begin{bmatrix}0 & \cdots & 0 & \hat{v}_{j+1} & \hat{v}_{j+2} & \cdots & \hat{j+p_c}\end{bmatrix} + \hat{V}_j^\text{(dl)} \\ V_j&=P_jU_j, \\ \end{aligned}
这里,P_j是另一个基矩阵,其列跨越与V_j相同的子空间,并且被构造为A-正交的:
P_j^{\ast} A P_j = D_j,
其中D_j是一个正定对角矩阵。此外,在(4.47)中,矩阵L_j是单位下三角的,矩阵U_j是单位上三角的。经过j次迭代后,A的近似特征对通过计算厄米正定矩阵的特征解得到:
V_j^{\ast} A V_j = U_j^{\ast} D_j U_j,
这是以D_jU_j表示的。

最后,我们注意到块Lanczos方法是扩展单一起始向量的标准Lanczos算法到多起始向量的更传统方法。当块Lanczos方法与缩减(如[89]中所述)结合时,所得到的算法在数学上等价于这里描述的带状Lanczos方法。然而,带状Lanczos方法相对于块Lanczos方法有两个明显的优势。首先,缩减非常简单,因为它只需要检查单个向量的范数。相比之下,在块Lanczos方法中,需要检查整个p_c向量块是否满秩,如果不是,则需要找到线性相关的列。通常,这需要计算每个块的QR分解。其次,带状Lanczos方法实际上执行的显式正交化次数略少,从而生成的Lanczos矩阵T_j^{\rm {(pr)}}比块Lanczos方法产生的矩阵略稀疏。



下一节:Jacobi-Davidson方法 上一级:带状Lanczos方法 上一节:算法
Susan Blackford 2000-11-20