算法 5.3 GHEP的Rayleigh商迭代 (1) 选择一个初始向量 v,要求 v^*Bv = 1,令 w = Bv,并取 \rho_1 (2) for k = 1,2,\dots (3) 计算 y = (A - \rho_k B)^{-1}w (4) 如果奇异,停止 (5) \theta = w^*y (6) 计算 w = By (7) \eta = (w^*y)^{1/2}, \; v = y/\eta, \; w = w / \eta (8) \rho_{k+1} = \rho_k + \theta/\eta^2 (9) 如果 \vert \theta \vert \ge \epsilon_M^{-1/2},停止 (10) end for (11) 获得结果 \lambda = \rho_k, \; x = v
算法5.2与算法5.3之间的唯一区别在于步骤(8),即更新位移的部分。这导致在每次迭代中,步骤(3)必须进行稀疏分解。然而,这种额外的工作换来的是三次收敛速率。