类 ConjugateGradient


public class ConjugateGradient extends PreconditionedIterativeLinearSolver

这是对RealLinearOperator的共轭梯度法的实现。它紧密遵循Barrett等人(1994年)(图2.5)的模板。手头上的线性系统是A · x = b,残差是r = b - A · x。

默认停止准则

实现了默认的停止准则。当 || r || ≤ δ || b || 时,迭代停止,其中b是右侧向量,r是当前残差的估计,δ是用户指定的容差。值得注意的是r是所谓的更新残差,由于舍入误差可能与真实残差不同(参见例如Strakos和Tichy,2002年)。

迭代次数

在当前上下文中,一个迭代应理解为对矩阵-向量乘积A · x的一次评估。因此,初始化阶段计为一次迭代。

异常上下文

除了标准的MathIllegalArgumentException外,如果线性算子或预处理程序不是正定的,此类可能会抛出MathIllegalArgumentException

  • "operator"指向有问题的线性算子,比如L,
  • "vector"指向有问题的向量,比如x,使得xT · L · x < 0。

参考文献

Barrett等人(1994年)
R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. M. Donato, J. Dongarra, V. Eijkhout, R. Pozo, C. Romine和H. Van der Vorst,线性系统解的模板:迭代方法的构建块,SIAM
Strakos和Tichy(2002年)
Z. Strakos和P. Tichy, 共轭梯度法中的误差估计及其在有限精度计算中的有效性,数字分析电子交易13:56-80,2002年