使用 p \gt 1 个初始向量会带来一个额外的难题,这是在单个向量 p=1 情况下不会出现的。对于单个初始向量 b,标准Lanczos算法在经过 j 次迭代后终止,如果下一个Krylov向量 A^j b 与之前的Krylov向量线性相关,即 A^j b \in {\mathcal K}^j(A,b). 在这种情况下,Lanczos向量构成了 A 不变子空间 {\mathcal K}^j(A,b) 的一组基,并且Lanczos三对角矩阵的所有特征值也是 A 的特征值。子空间 {\mathcal K}^j(A,b) 是 A 不变的,意味着Krylov序列已被完全耗尽,因此再增加更多的Krylov向量也不会扩展Krylov子空间。这种在 j 次迭代后的终止是自然而然的。
然而,在 p>1 的情况下,首次出现的线性相关向量在(4.27)中并不意味着块Krylov序列已被耗尽。它仅仅意味着该线性相关向量及其后续的 A 倍数不包含任何新信息,因此,这些向量应从(4.27)中移除。这种检测并删除线性相关向量的过程称为精确收缩。例如,假设初始向量(4.26)使得向量 A b_1 是 b_1, b_2, \ldots, b_p 的线性组合。那么 A b_1 肯定与(4.27)中 A b_1 左侧的Krylov向量线性相关;实际上,每个向量 A^i b_1 且 i \geq 1 都与(4.27)中 A^i b_1 左侧的向量线性相关。在这种情况下,所有向量 A^i b_1,i \geq 1,都需要从(4.27)中删除,从而得到收缩后的块Krylov序列
当然,在有限精度算术中,无法区分完全线性相关和几乎线性相关的向量。因此,在实践中,几乎线性相关的向量也需要被检测和删除。在下文中,我们将检测和删除线性相关及几乎线性相关向量的过程称为收缩。