下一节:清除 \theta
上一级:正交收缩变换
上一节:锁定或清除单个特征值
首先讨论的是单个收敛的Ritz值的锁定。假设
Hy = y \theta, \ \ \Vert y\Vert = 1,
且
e_k^* y = \eta,其中
\vert\eta \vert \le \epsilon_D \Vert H \Vert 。
这里,理解为
\epsilon_M \le \epsilon_D < 1 是介于 \epsilon_M 和 1 之间的指定相对精度容差。
如果 \theta 是“需要的”,那么锁定 \theta 是可取的。然而,为了实现这一点,需要安排对当前Arnoldi分解进行变换,使其具有小的次对角线以隔离 \theta 。这可以通过使用算法7.8构建一个 k \times k 正交矩阵 Q = Q(y) 来完成:
Q e_1 = y \quad \mathrm{且}\quad e_k^* Q = ( \eta, \tau e_{k-1}^*),
其中
\eta^2 + \tau^2 = 1 。
现在,当我们应用
AVQ = VQ (Q^*H Q) + f e_k^* Q ,我们得到
A [v_1 , V_2] = [v_1 , V_2] \begin{bmatrix} \theta & h^* \\0 & H_2 \end{bmatrix} + f (\eta, \tau e_{k-1}^*).
不幸的是,H_2 不是上三角海森堡形式。需要进一步的工作将其转换为海森堡形式,同时不干扰残余项 f (\eta, \tau e_{k-1}^*) 的形式。我们需要构建一个正交矩阵 U,使得 \widehat{H}_2 = U^*H_2U 是上三角海森堡形式,且 e_{k-1}^* U = e_{k-1}^*。这可以通过Householder变换或算法7.8中定义的变换的变体从最后一行向上工作来完成。以下MATLAB代码段展示了一种略低效的方法来获得这样的 U。
rev = [k-1:-1:1];
C = H_2';
[U,H_2] = hess(C(rev,rev));
U = U(rev,rev);
H_2 = H_2(rev,rev)';
一旦构建了 U,用
Q : Q [{1 \atop 0}\;{0 \atop U}] 替换 Q,这些变换的最终结果将是
\begin{aligned}
Av_1 &= v_1 \theta + f \eta, \quad\text{其中}\quad v_1^*f = 0, \\
A V_2 &= [v_1 , V_2] \begin{bmatrix} h^* \\ H_2 \end{bmatrix} + f \tau e_{k-1}^*,s
\end{aligned}
其中
[v_1 , V_2] = V Q 且 H_2 是上三角海森堡形式。之后,所有后续的隐式重启都像
A V_2 = V_2 H_2 + f\tau e_{k-1}^*.
所有与隐式重启相关的后续正交变换都应用于 V_2 和
[{h^* \atop H_2}]
同时从不干扰关系
Av_1 = v_1 \theta + f \eta 。
在后续的Arnoldi步骤中,v_1 参与正交化,从而自动实现了Parlett和Scott[363,353]推荐的选
下一节:清除 \theta
上一级:正交收缩变换
上一节:锁定或清除单个特征值
Susan Blackford
2000-11-20