嵌套预处理器准则


9

考虑您要使用预处理Krylov方法求解线性系统的情况,但是应用预处理器本身涉及求解辅助系统,这是通过另一种预处理Krylov方法完成的。

  • 在一种极端情况下,您可以运行内部求解以在外部求解的每个步骤中收敛。

  • 在另一种极端情况下,您根本无法进行内部求解,而只能用内部前置条件替换它。

  • 在中间的某个位置,您可以在固定的迭代次数后或达到一定的公差之后截断内部的Krylov循环。

根据经验,我遇到了第一个极端更好的情况,以及第二个极端更好的情况(就总成本而言)。但是,我找不到明确的理由说明某些情况为什么偏爱一种策略而不是另一种策略。

是否有关于何时使用这些不同策略的指导或理论?


4
对于您列表中的至少第三种(中级)情况,一个不错的起点是Simoncini和Szyld,《灵活的内外Krylov子空间方法》,SIAM J. Numer。肛门 40 pp.2219-2239。
Andrew T. Barker 2015年

感谢您的参考,我很好奇他们那里有什么。奇怪的是,在实践中,我发现进行中间形式的不同处理会带来最差的性能。如果公差/迭代次数固定,则外部求解器会挂在内部公差的误差级别上。从较大的内部公差开始并随着外部方法的进行而减小它似乎比仅将内部公差设置为较小时要差。
尼克·阿尔杰

您是否在使用灵活的Krylov方法?您描述的结果是我期望的结果,如果不是这样的话。中间情况恰恰是在每个迭代中预条件器(略有不同)的情况,即需要灵活的Krylov方法时。
安德鲁·T·巴克

Answers:


1

这个问题已经开放了很长时间,但我认为仍然值得回答。

在各个块上使用Krylov空间求解器作为内部前置条件的根本问题是它们不是线性算子。为了理解这一点,让我们用x~=K(A,P,τ,N;b) 通过运行Krylov空间方法获得的向量作为解 K 在线性系统上 Ax=b 最多 N 迭代或直到公差 τ 使用前置条件达到 PA1。换句话说,你可以想到K 作为行动者 b

现在注意 K(A,P,0,;) 是线性运算符:需要求解 Ax=b 确切地,即 K(A,P,0,;b)=A1b,在 b。在许多情况下,从零向量开始对Krylov空间方法进行精确的一次迭代也是将线性算子应用于b。但是因为Krylov向量的序列取决于起始残差r(0)=bAx(0), 运营商 K(A,P,τ,N;) 通常不是有限的线性算子 Nτ

这意味着如果您使用 K(A,P,τ,N;) 作为线性系统的预处理器的一部分,其中 A 如果是一个块,那么您将得到一个不充当线性运算符的前置条件。

这与用于预处理的许多其他方法形成对比:例如,一个SSOR步骤是对其应用矢量的线性运算,所有其他应用定点迭代一个步骤的其他方法也是如此。

现在的根本问题是,大多数Krylov空间方法确实要求前提条​​件是线性算子。如果预处理器不是线性的,它们将不会收敛,从而解释您的观察。另一方面,某些Krylov空间方法(通常以单词“ Flexible”开头,例如“ Flexible GMRES”中的F-GMRES)存在变体,可以解决此问题,并且可以处理非线性的预处理器操作员。原始方法的这些灵活变体仍将收敛,并且在与良好(但非线性)的预处理器结合使用时通常是功能强大的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.