非线性矩阵系统的定点迭代收敛

计算科学 非线性方程
2021-12-23 18:45:21

我正在对多孔介质中的两相不混溶流进行建模。当我建立方程组时,我得到一个非线性方程组,可以用以下形式表示:

A(x)x=b

矩阵在哪里A(x)是未知数的函数x. 我知道我可以使用牛顿法求解这个系统,但是显式写出这个方程左边的导数有点繁琐。相反,我想使用形式的定点迭代:

A(xn)xn+1=b

但是,我不确定迭代是否会收敛到正确的解决方案。我熟悉收缩映射定理,因为它适用于一维中的定点迭代。这个理论是否也扩展到更高的维度?是否有具体条件A(x)保证这个定点迭代会收敛到解决方案?

3个回答

Banach 不动点定理非常普遍,只需要一个度量空间。如果地图xA(x)1b是全局收缩的,不动点迭代收敛。对于您的问题(如果公式是您描述的问题类别的典型),它可能会线性收敛,具有比基本牛顿稍大的吸引力盆地(没有线搜索、信任区域或延续方法)。

请注意,您仍然可以将系统编写为缺陷校正方法:

A~(xn)δx=(A(xn)xnb)=F(x)xn+1=xn+δx

(在哪里A~=A此时仍然是您的“Picard”线性化)。这在精确算术中具有相同的收敛特性,但在实践中具有一些吸引人的特性:

  1. 显式残差F(x)=A(x)xb可用于非线性收敛测试,因此您不必使用长期误诊收敛停滞的临时“我的解决方案没有太大变化”测试。
  2. 线性求解的收敛容差通常可以大大放宽,因为您只是在求解缺陷。
  3. 在这种情况下应用线搜索或信任区域全球化也更自然。
  4. 它具有牛顿法或修改后的牛顿法的结构,因此您可以逐步丰富您的近似A~. 如果您将牛顿线性化中的所有项相加,您将得到精确的牛顿迭代。

实际上,我建议从这种 Picard 线性化预处理的无雅可比 Newton-Krylov 方法开始。如果您使用的是 PETSc,只需传递您的 PicardA在 的两个插槽中SNESSetJacobian(),然后通过-snes_mf_operator将收敛速度(应该是二次的)与你看到的(线性)收敛速度进行比较-snes_mf_operator

您还应该知道,有许多非线性求解方法,最显着的是非线性 GMRES 和准牛顿,它们可以适应近似雅可比行列式,例如您的 Picard 线性化。后一类不受无矩阵有限差分雅可比应用的有限差分误差的影响。

生成的序列A(xn)xn+1=b可以写成形式 xn+1=F(xn):=A(xn)1b, 并在本地签订解决方案xiff 光谱半径r矩阵的F(x)=A(x)1A(x)x小于一。在这种情况下,r给出线性收敛速度. 因此,如果A(xn)条件良好,仅微弱地依赖于xn.

在所有其他情况下,如果您计算一个合适的预条件子可能会好得多BA(x0)然后通过一种标准方法(例如,Broyden 的好方法http://en.wikipedia.org/wiki/Broyden%27s_method)求解方程组F(x)=0, 在哪里F(x):=B1(A(x)xb).

您的问题让人想起电子结构方法中的自洽场 (SCF) 程序。虽然这些都是特征值问题,但也有一些相似之处。大多数 SCF 实现使用 DIIS [1] 方法来加速或强制收敛。事实证明,DIIS 适用于几乎所有需要收敛的迭代过程。

[1] http://en.wikipedia.org/wiki/DIIS