数值计算方法 matlab用二分法或简单迭代法求_多尺度计算方法

df9e252ffa4b7ff0f6534170d0c37662.png

读书笔记,翻译自鄂维南院士论文。


多尺度计算是应用数学中重要的高效计算方法,广泛用于科学计算。它联系宏微观尺度,可以同时获得模型的宏观大尺度和微观小尺度的物理特性。

发展多尺度算法是为了获得PDE的细尺度解。重要的多尺度算法包括:多重网格法;快速多级子算法;区域分解法;自适应网格法;多分辨率表示法。


1. PDE

求解PDE的标准流程,先用有限元或有限差分方法离散PDE,得到一个线性方程组;然后通过直接或者迭代法求解这个方程组。

PDE的收敛速率取决于矩阵的条件数,条件数依赖于离散的单元的尺度。单元尺度越小,迭代收敛越慢。很容易理解为什么:有限元或者有限差分的算子是局部的,但是PDE的解析解是全局的。如果在区域的很小局部区域出现误差,那么这个误差会波及全局。如果迭代法法是局部的,那么为了减小它的误差,则需要使用propagator来减小误差。当然,如果使用的迭代方法是全局的,则不必进行这一处理,这种情形得而全局基函数可以代表全部的数值解。实际上,当矩阵条件数大幅减小时,有限元方法可以构造多尺度的基函数。


2. 多尺度思想

一个重要的事实是,收敛很慢很大程度上是由于在大尺度解上的误差导致的。解在大尺度的部分可以在粗网格coarse grid上显现。因为在大尺度上消除误差消耗比较小的成本,所以发展一种更加有效的迭代方法,使得解的大尺度部分的误差在粗网格上可以消除。

以上这种思想就是多重网格方法的主要思想。为了将这种思想付诸于算法以便于在计算机上实现,我们必须知道如何去转移不同尺度下的数值解,以及如何去设置不同尺度网格上的迭代。这实际上是多重网格方法的核心问题。


3. 例子

下面是一个例子。用二阶差分格式离散之后,得到代数方程组,其系数矩阵A的特征值和特征向量可以用离散傅立叶分析获得其显式形式。于是矩阵条件数k也可以用特征值和特征向量表示出来。用迭代方法求解代数方程组,其中的迭代矩阵很关键。迭代矩阵的谱半径决定了迭代方法的收敛性。

对称矩阵A可以用A的对角阵D和-A的下三角矩阵L表示,A=D-L-L的转置。由此,可以得到一些迭代方法的迭代矩阵,例如雅可比迭代矩阵,高斯赛德尔迭代矩阵,松弛方法的松弛迭代矩阵。此外,还有Young发展的超松弛迭代。

通过谱半径,我们可以比较不同迭代方法的收敛速率,同时判断不同迭代方法的收敛性能。

解的低频率部分是最难的,就这一点来说,迭代过程可以视为光滑化:数值解在迭代之后逐渐变得光滑,因为高频部分逐渐消失。低频部分可以在粗网格尺度上表示,在这个尺度上收敛速度快。这是多重网格方法的关键所在。为了将这种关键技术转化为算法和程序,我们需要了解以下几个方面:如何在不同尺度网格下转换函数?在每个网格尺度上的迭代过程是怎样的?

为了了解如何工作的,让我们来看一个二重网格的例子,这两个网格分别是Mh和M2h,它们对应的单元尺度是h和2h。每个网格尺度上的迭代方法可以是松弛迭代或者高斯赛德尔迭代为了在Mh和M2H之间转换函数,我们将运用restriction/projection算子,它将细网格函数映射到粗网格;以及interpolation/propagation算子,它将粗网格函数映射到细网格。在这些算子的帮助下,二重网格算法可以表述为以下形式:在细网格Mh尺度上用迭代算法,高斯迭代或者松弛迭代,进行光滑处理;计算参差;将残差通过propagation算子映射到粗网格;在粗网格行求解;在细网格上通过interpolation算子插值。

在一些情况下,例如分子动力学模型,A2h是不容易得到的。然而对于在这的这个例子来说,A2h可通过PDE在粗网格尺度的离散得到。

二重网格方法容易推广至2n重网格方法,M4h,M8h,等等。设计一种全局方案是很重要的,有两种,V和W型。V型式最细网格——粗网格1——粗网格2——等等——最粗网格。W型是最细网格——最粗网格——最细网格。

多重网格方法的性质取决于迭代过程在不同网格中的光滑效果。目前,对于多重网格法统一而深刻的理解是缺乏的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值