预处理 Uzawa 迭代的最简单方法

计算科学 收敛 预处理 鞍点
2021-12-08 08:19:06

我有一个内部圆形狄利克雷约束的扩散问题和一个将强制执行某个全局体积积分的侧面条件。

(Du(x))=0

外边界约束:

u(x)=0   x Ω

内边界约束:

u(x)=1   x Ωint

Ωu dx=Vt

我已经成功地将双线性形式离散化为 A,并且体积约束基本上是具有单元格大小的行/列向量。

我还成功解决了由此产生的鞍点问题:

(ABTB0)(x1x2)=(0Vt)

通过经典的 uzawa 迭代:

x1k+1=x1kA1(Ax1k+Bx2k)

x2k+1=x2k+τ(BTx1k+1Vt)

结果看起来就像我想要的一样,并且满足所有附带条件: result_classical_uzawa

我读到经典的 uzawa 迭代远不是最有效的,并且有很多方法可以做得更好。我很难理解预条件 Uzawa 方法是如何工作的,以及如何在不进行昂贵的反演的情况下实际提出预条件矩阵。

什么是正确预处理我的 uzawa 方法以使收敛变得更快(并希望更稳定)的最简单方法

1个回答

这应该是“评论”,但我没有凭据。我将这个问题解释为关于理解 Uzawa 方法的工作原理、它们的稳定性和优化,而不是如何求解扩散方程。以下文章易于阅读并解决了这个问题:

何等人。https://arxiv.org/abs/1510.04246(“加速宇泽算法”)

帕斯卡努等人。https://arxiv.org/abs/1405.4604(“关于非凸优化的鞍点问题”)

这两个都对算法进行了清晰的讨论,很好地解释了它的工作原理以及何时可能需要使用它。

的文章

多芬等人。https://arxiv.org/abs/1406.2572(《高维非凸优化中鞍点问题的识别与攻击》)

将该方法与牛顿式和梯度下降法进行比较。最后两个参考文献主要针对神经网络学习过程。