下一节
上一级
上一节
目录
索引
下一节: 位移的选择
上一级: 隐式重启Lanczos
上一节: 隐式重启Lanczos
隐式重启
Lanczos过程的一个不幸方面是,无法预先确定需要多少步才能在指定精度内确定感兴趣的特征值。这取决于特征值 λ ( A ) \lambda(A) λ ( A ) 的分布和初始向量 v 1 v_1 v 1 的选择。在很多情况下,收敛不会发生,直到 k k k 变得非常大。保持 V k V_k V k 的数值正交性对于大的 k k k 很快变得难以处理,其代价是 O ( n k 2 ) O(nk^2) O ( n k 2 ) 次浮点运算。
另一种保持正交性的方法是限制基集的大小并使用重启方案。重启意味着用一个“改进的”初始向量 v 1 + v_1^+ v 1 + 替换初始向量 v 1 v_1 v 1 ,并使用新向量重新计算Lanczos分解。残差向量 r k r_k r k 的结构起到了指导作用:理论上,如果 v 1 v_1 v 1 是 A A A 的 k k k 个特征向量的线性组合,r k r_k r k 将消失。我们的目标是迭代地实现这一点。在对称情况下,这些特征向量是正交的,因此构成了一个不变子空间的标准正交基。
重启的需求早在Karush [258 ] 和Lanczos [285 ] 的原始算法出现后不久就被认识到了。随后,Paige [347 ]、Cullum和Donath [89 ],以及Golub和Underwood [197 ] 都有所发展。所有这些方案都是显式 的,即通过某种过程产生一个新的初始向量,并构建一个全新的Lanczos分解。
在本节中,我们将描述隐式重启 。这是一种将隐式移位QR方案与 k k k 步Lanczos分解相结合的技术,以获得隐式移位QR迭代的截断形式。避免了与Lanczos过程相关的数值困难和存储问题。该算法能够计算出具有用户指定特征的少数(k k k 个)特征值,例如代数最大或最小特征值或幅度最大的特征值,仅使用 k k k 个向量的适度倍数的存储空间。计算出的特征向量构成了所需 k k k 维特征空间的基础,并且在工作精度上数值正交。
隐式重启提供了一种从大型Krylov子空间中提取有趣信息的方法,同时避免了与标准方法相关的存储和数值困难。它通过不断将有趣的信息压缩到一个固定大小的 k k k 维子空间中来实现这一点。这是通过隐式移位QR机制完成的。一个长度为 m = k + p m = k+p m = k + p 的Lanczos分解,
A V m = V m T m + r m e m ∗ , (4.20) A V_m = V_m T_m + r_m e_m^\ast, \tag{4.20} A V m = V m T m + r m e m ∗ , ( 4.20 )
被压缩为一个保留感兴趣特征信息的 k k k 长度的分解。这是通过应用 p p p 个隐式移位QR步完成的。移位过程的第一阶段结果是
A V m + = V m + T m + + r m e m ∗ Q , (4.21) A V_m^+ = V_m^+ T_m^+ + r_m e_m^\ast Q, \tag{4.21} A V m + = V m + T m + + r m e m ∗ Q , ( 4.21 )
其中 V m + = V m Q V_m^+ = V_m Q V m + = V m Q , T m + = Q ∗ T m Q T_m^+ = Q^{\ast} T_m Q T m + = Q ∗ T m Q ,以及
Q = Q 1 Q 2 ⋯ Q p Q = Q_1Q_2 \cdots Q_p Q = Q 1 Q 2 ⋯ Q p 。每个 Q j Q_j Q j 是与移位QR算法中使用的移位 μ j \mu_j μ j 相关的正交矩阵。由于矩阵 Q j Q_j Q j 的海森堡结构,向量 e m ∗ Q e_m^{\ast} Q e m ∗ Q 的前 k − 1 k-1 k − 1 个元素为零。这意味着方程 (4.21 ) 中的前 k k k 列保持在Lanczos关系中。将 (4.21 ) 两边的第一个 k k k 列等式化,提供了更新的 k k k 步Lanczos分解
A V k + = V k + T k + + r k + e k ∗ , A V_k^+ = V_k^+ T_k^+ + r_k^+ e_k^{\ast}, A V k + = V k + T k + + r k + e k ∗ ,
具有更新形式的残差
r k + = V m + e k + 1 β k + r m Q ( m , k ) r_k^+ = V_m^+ e_{k+1} \beta_k + r_m Q(m,k) r k + = V m + e k + 1 β k + r m Q ( m , k ) 。以此为起点,可以应用 p p p 个额外的Lanczos步骤返回到原始的 m m m 步形式。
隐式重启Lanczos方法(IRLM)的模板在算法 4.7 中给出。
算法 4.7 HEP的隐式重启Lanczos方法(IRLM)
(1) 取初始猜测向量 v v v ,归一化 v 1 = v / ∥ v ∥ 2 v_1 = v/\Vert v\Vert_2 v 1 = v /∥ v ∥ 2
(2) 计算 m m m -步Lanczos分解 A V m = V m T m + r m e m ∗ AV_m = V_mT_m + r_me^\ast_m A V m = V m T m + r m e m ∗
(3) repeat until 收敛(T k = D k T_k=D_k T k = D k 对角化)
(4) 计算谱 σ ( T m ) \sigma(T_m) σ ( T m ) ,选择 p p p 个位移 μ 1 , μ 2 , … , μ p \mu_1, \mu_2, \dots, \mu_p μ 1 , μ 2 , … , μ p
(5) 初始化 Q = I m Q = I_m Q = I m
(6) for j = 1,2,...,p,
(7) QR分解 Q j R j = T m − μ j I Q_jR_j = T_m - \mu_j I Q j R j = T m − μ j I
(8) 更新 T m = Q j ∗ T m Q j , Q = Q Q j T_m = Q_j^\ast T_m Q_j, Q = QQ_j T m = Q j ∗ T m Q j , Q = Q Q j
(9) end for
(10) r k = v k + 1 β k + r m σ k r_k = v_{k+1}\beta_k + r_m \sigma_k r k = v k + 1 β k + r m σ k , 其中 β k = T ( k + 1 , k ) \beta_k = T(k+1,k) β k = T ( k + 1 , k ) 及 σ k = Q ( m , k ) \sigma_k = Q(m, k) σ k = Q ( m , k )
(11) V k = V m Q ( : , 1 : k ) V_k = V_m Q(:, 1:k) V k = V m Q ( : , 1 : k ) ; T k = T m ( 1 : k , 1 : k ) T_k = T_m(1:k, 1:k) T k = T m ( 1 : k , 1 : k )
(12) 以如下 k k k 步Lanczos分解开始
A V k = V k T k + r k e k ∗ AV_k = V_kT_k+r_k e^\ast_k A V k = V k T k + r k e k ∗ ,
在进行 p p p 步Lanczos迭代后,得到新的 m m m 步Lanczos分解
A V m = V m T m + r m e m ∗ AV_m = V_mT_m+r_m e^\ast_m A V m = V m T m + r m e m ∗
(13) end repeat
现在我们将描述一些实现细节,参考算法 4.7 中的相应阶段。
(1)
理想情况下,对于特征值计算,应尝试构建一个在感兴趣的特征向量方向上占主导地位的初始向量 v v v 。如果有一系列密切相关的特征值问题,前一个问题的解可能为下一个问题提供初始向量。在没有其他考虑的情况下,随机向量是一个合理的选择。
(2)
下面的算法 4.8 可以用来计算这个初始的 ( m = k + p ) (m = k+p) ( m = k + p ) 步Lanczos分解。
(4)
移位 μ j \mu_j μ j 是根据用户的“所需集”规范以及 T m T_m T m 的谱的当前和可能过去的信息选择的;参见第4.5.2 节。
(6)-(9)
使用 μ 1 , μ 2 , … , μ p \mu_1, \mu_2, \ldots, \mu_p μ 1 , μ 2 , … , μ p 作为移位,对 T m T_m T m 应用 p p p 步移位QR迭代。这应该使用隐式移位QR变体(即“凸起追踪”机制)来完成。如果使用精确移位,则在完成 p p p 步QR后,β k = T m ( k + 1 , k ) \beta_{k} = T_m(k+1,k) β k = T m ( k + 1 , k ) 应为零,并且前导子矩阵 T m ( 1 : k , 1 : k ) T_m(1:k,1:k) T m ( 1 : k , 1 : k ) 应具有 θ 1 , θ 2 , … , θ k \theta_1, \theta_2, \ldots, \theta_k θ 1 , θ 2 , … , θ k 作为其特征值。
(10)
当使用精确移位时,步骤 (6)-(9) 中提到的属性通常在有限精度下近似为真。然而,由于舍入误差,它们可能无法实现。因此,在更新残差向量时包含两个项是很重要的
r k ← v k + 1 β k + r m σ k r_k \leftarrow v_{k+1}\beta_{k} + r_m \sigma_k r k ← v k + 1 β k + r m σ k 。请注意,使用精确移位,更新后的 V k V_k V k 和 T k T_k T k 将提供一个新的 k k k 步Lanczos分解,其Ritz值和向量是目前为止对用户规范的最佳近似。
(12)
这一步需要对之前讨论的Lanczos过程进行轻微修改。它从通常方案的第 k k k 步开始,并假设所有 k k k 个Lanczos向量都已保留在一个矩阵 V k V_k V k 中。详细信息在下面的算法 4.8 中给出。
下一节
上一级
上一节
目录
索引
下一节: 位移的选择
上一级: 隐式重启Lanczos
上一节: 隐式重启Lanczos
Susan Blackford
2000-11-20