Answers:
多重网格背后的主要思想是投影。我尝试考虑如下:
假设我想高精度地求解PDE,因此我继续在具有很多点的非常精细的网格上离散域(比方说,使用有限差分法)。最后,我设置了方程组,并准备解决它。我尝试使用我最喜欢的迭代求解器(雅可比,高斯塞德尔,共轭梯度等)。我继续等待了一天以上,意识到我的计算机仍在尝试计算答案!!!
这些迭代方法无法快速运行的原因是(通常)在建立像这样的大型方程组时,矩阵本身的特征值非常接近1。为什么这很重要?因为许多迭代方法的收敛速度与最大特征值成反比关系(请参见Christian Clason与Brigg的Multigrid教程幻灯片的链接,第1部分,第27页)。因此,最大特征值越接近1,迭代方法就越慢。(注意:这有点简化了事情,但这有助于激发对多网格的需求)。
显然,如果未知数较少(即,在具有较少网格点的粗糙网格上),则解决问题的速度总是更快。但更重要的是,在较粗的网格上求解(或近似解)是解决较细网格问题的一个很好的起点。 这是大多数(如果不是全部)多网格方法背后的关键思想。为什么会这样呢?直观上讲,这是有道理的,但是有一种数学上严格的方法可以证明这一点。
让我们看一下应用于原始细网格问题的迭代方法(出于参数考虑,例如jacobi或gauss seidel)的错误的傅立叶模式。我们将看到,在最初的几次迭代中,大多数高频(高度振荡)错误已被消除!这很好,但是仍然存在低频(较少的振荡)错误,并且不会很快消失。实际上,低频误差阻止了标准迭代方法快速收敛。
当我们在较粗的网格上解决问题时(例如,通过类似jacobi或gauss-seidel的迭代方法),我们可以比细网格上更快地(即,迭代次数更少)消除低频误差。因此,如果我们解决了粗网格的问题,那么我们就有一个解决方案,它的低频误差已大大降低。因此,它将用作在更细网格上进行迭代方法的起点。
尽管存在多种不同的多重网格方法,但大多数方法是通过以下几种方式来进行操作的:
对我来说,多重网格方法最困难的部分是网格之间的投影。@ChristianClason建议的Briggs教程比我能更好地处理该主题。
这个站点可能不是一个用伪代码进行详细解释的好地方(如FAQ中所述,“如果您能想象一本完整的书都能回答您的问题,那么您的要求就太多了。”),所以您可能想要首先从有关该主题的经典书籍(下面列出)开始,然后回过头来解决有关您遇到麻烦的具体细节的特定问题。
Briggs,Multigrid教程,SIAM,2000(您可以在此处和此处下载幻灯片)这是一个随意的资料,它对多网格原理(主要是椭圆问题)进行了简要介绍。
Brandt,Multigrid Techniques,修订版,SIAM 2011,(或下载pdf)。这是多网格哲学和多尺度建模的巨大发展,并且很有可能深刻改变您对隐式求解器的思考方式。 阿奇·勃兰特(Achi Brandt)的网站上有更多参考文献,包括他的2000年《多尺度科学计算评论》。
Trottenberg,Oosterlee和舒尔勒,多重网格,科学出版社,2001年这更多合作的例子比勃兰特,其中包括大量的实验和细节上的具体方法,尤其是在流体动力学方面。
Hackbusch,《 Multigrid 方法和应用》,Springer,1985年 这提供了严格的收敛理论,其中包括Fredholm积分算子的“第二类Multigrid ”。