我正在对多孔介质中的两相不混溶流进行建模。当我建立方程组时,我得到一个非线性方程组,可以用以下形式表示:
矩阵在哪里是未知数的函数. 我知道我可以使用牛顿法求解这个系统,但是显式写出这个方程左边的导数有点繁琐。相反,我想使用形式的定点迭代:
但是,我不确定迭代是否会收敛到正确的解决方案。我熟悉收缩映射定理,因为它适用于一维中的定点迭代。这个理论是否也扩展到更高的维度?是否有具体条件保证这个定点迭代会收敛到解决方案?
我正在对多孔介质中的两相不混溶流进行建模。当我建立方程组时,我得到一个非线性方程组,可以用以下形式表示:
矩阵在哪里是未知数的函数. 我知道我可以使用牛顿法求解这个系统,但是显式写出这个方程左边的导数有点繁琐。相反,我想使用形式的定点迭代:
但是,我不确定迭代是否会收敛到正确的解决方案。我熟悉收缩映射定理,因为它适用于一维中的定点迭代。这个理论是否也扩展到更高的维度?是否有具体条件保证这个定点迭代会收敛到解决方案?
Banach 不动点定理非常普遍,只需要一个度量空间。如果地图是全局收缩的,不动点迭代收敛。对于您的问题(如果公式是您描述的问题类别的典型),它可能会线性收敛,具有比基本牛顿稍大的吸引力盆地(没有线搜索、信任区域或延续方法)。
请注意,您仍然可以将系统编写为缺陷校正方法:
(在哪里此时仍然是您的“Picard”线性化)。这在精确算术中具有相同的收敛特性,但在实践中具有一些吸引人的特性:
实际上,我建议从这种 Picard 线性化预处理的无雅可比 Newton-Krylov 方法开始。如果您使用的是 PETSc,只需传递您的 Picard在 的两个插槽中SNESSetJacobian()
,然后通过-snes_mf_operator
。将收敛速度(应该是二次的)与你看到的(线性)收敛速度进行比较-snes_mf_operator
。
您还应该知道,有许多非线性求解方法,最显着的是非线性 GMRES 和准牛顿,它们可以适应近似雅可比行列式,例如您的 Picard 线性化。后一类不受无矩阵有限差分雅可比应用的有限差分误差的影响。
生成的序列可以写成形式 , 并在本地签订解决方案iff 光谱半径矩阵的小于一。在这种情况下,给出线性收敛速度. 因此,如果条件良好,仅微弱地依赖于.
在所有其他情况下,如果您计算一个合适的预条件子可能会好得多然后通过一种标准方法(例如,Broyden 的好方法http://en.wikipedia.org/wiki/Broyden%27s_method)求解方程组, 在哪里.
您的问题让人想起电子结构方法中的自洽场 (SCF) 程序。虽然这些都是特征值问题,但也有一些相似之处。大多数 SCF 实现使用 DIIS [1] 方法来加速或强制收敛。事实证明,DIIS 适用于几乎所有需要收敛的迭代过程。