求解PDE的多重网格法(MG)
多重网格法相对于普通的Jacobi迭代或者G-S迭代等能够得到和未知数的个数成线性的高效运行时间的主要原因在于:迭代初值的一步步接近真值和G_S方法的前面几步的快速收敛性。
先看一张图[1]:

这张图说明了以下几点:一、G-S迭代法在开始几步迭代时收敛速度很快,但是随着步数的增加收敛速度逐渐减慢;二、第一条性质和求解的方程未知数的个数无关,尤其是在最开始的收敛速度很快的几步;三、未知数个数越少,最终收敛速度越快,如图中的绿线(这个可以从另一个角度来理解,一般情况下,求解未知数个数少的方程显然比求解未知数个数多的方程容易地多)。
再看一系列图片的结果(这里只截取其中的几个)[2]:


观察上面几个图,会发现随着迭代步数的增加,图像的右半侧变化越来越小,比如上面的第4个图到第6个图。这就是有的文献中[3]说的迭代方法可以迅速地将摆动误差(高频分量,上图中右半侧部分)衰减,但对那些低频分量,迭代法的效果不是很显著。
有了以上的铺垫,下面的几个问题就相对容易理解了。一、既然随着迭代步数的增加,对于那些低频分量的效果很差,那么有没有其他的方法来解决这个问题呢?一个方法是将问题转化到粗网格上关于误差方程在使用G-S迭代方法迭代几步,而粗网格的高频对应细网格的低频,这样的话,误差的收敛速度相对来说快很多;二、如何进行粗细网格的转化?简言之,使用限制算子(从粗网格到细网格)和插值算子(从细网格到粗网格);三、在多重网格法中,既然G-S方法为什么能奏效,那么其他的迭代法如Jacobbi方法或者SOR方法能借用过来吗?不行,在多重网格法的使用中,只有G-S迭代法或者JOR迭代法(一种加权形式的Jacobbi迭代法)符合要求,而其他的迭代法则不符合要求,这可以使用双Fourier变换以及复变函数的知识来证明[4];四、实际上,多重网格法运行速度快的一个主要原因是在经过了粗网格的迭代校正后,重新回到细网格上使用迭代法,初值较只在原始细网格上使用迭代法的迭代值更接近真值。
55)H6F%{25[A.jpg)
参考文献:
[1]http://www.ams.sunysb.edu/~hcchen/ams528_hw5_1.html
[2]http://www.cs.berkeley.edu/~demmel/cs267/lecture25/lecture25.html
[3]http://blog.renren.com/share/75144792/13005621357
[4]《微分方程数值分析基础教程》,(英)伊则莱斯著,刘晓艳等译,清华大学出版社,2005年
求解PDE的多重网格法(MG)的更多相关文章
- PDE工具箱的简单使用
转载自Here matlab的PDE工具箱的简单使用 问题选择 边界条件选择 菜单按钮和简单使用 命令行输入pdetool,打开GUI编辑界面如下: 注意到工具栏上,就是我们要用到的,从左到右依次使用 ...
- 1.5 Scipy:高级科学计算
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...
- 如何设置fvOptions【翻译】
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-pre-processing/121763-how-set-fvoption ...
- 多重网格法简介(Multi Grid)
原文链接 多重网格法是一种用于求解方程组的方法,可用于插值.解微分方程等. 从专业角度讲多重网格法实际上是一种多分辨率的算法,由于直接在高分辨率(用于求解的间隔小)上进行求解时对于低频部分收敛较慢,与 ...
- Matlab学习——求解微分方程(组)
介绍: 1.在 Matlab 中,用大写字母 D 表示导数,Dy 表示 y 关于自变量的一阶导数,D2y 表示 y 关于自变量的二阶导数,依此类推.函数 dsolve 用来解决常微分方程(组)的求解问 ...
- LibTorch | 使用神经网络求解一维稳态对流扩散方程
0. 写在前面 本文将使用基于LibTorch(PyTorch C++接口)的神经网络求解器,对一维稳态对流扩散方程进行求解.研究问题参考自教科书\(^{[1]}\)示例 8.3. 目录 0. 写在前 ...
- 0-1背包问题蛮力法求解(c++版本)
// 0.1背包求解.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #define ...
- 4. SVM分类器求解(2)
最优间隔分类器(optimal margin classifier) 重新回到SVM的优化问题: 我们将约束条件改写为: 从KKT条件得知只有函数间隔是1(离超平面最近的点)的线性约束式前面的系数,也 ...
- 3. SVM分类器求解(1)——Lagrange duality
先抛开上面的二次规划问题,先来看看存在等式约束的极值问题求法,比如下面的最优化问题: 目标函数是f(w),下面是等式约束.通常解法是引入拉格朗日算子,这里使用来表示算子,得到拉格朗日公式为 是等式约束 ...
随机推荐
- Linux profile File
umask 022alias vim="/pd/vim/7.1/bin/vim"if [ -e /usr/bin/vim ]; then alias vim="/usr/ ...
- Redis 安装为Window服务
参考: http://www.cnblogs.com/zhoub/p/3841222.html 关键命令 redis-server.exe –service-install conf/redis.co ...
- nginx负载均衡之基于客户端cookie的会话保持
通过ip_hash做会话保持有一定的缺陷,这个是通过客户端ip来实现.同一个网络下众多客户端访问服务器会被扔到同一台机器,再或者是CDN也 会导致负载不均衡.所以要实现通过客户端cookie实现,包括 ...
- No configuration found for the specified action解决办法
http://blog.csdn.net/carefree31441/article/details/4857546 使用Struts2,配置一切正常,使用常用tag也正常,但是在使用<s:fo ...
- 20145304 Java第八周学习报告
20145304<Java程序设计>第八周学习总结 教材学习内容总结 NIO NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记 ...
- ACM +-字符串
+-字符串 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换. ...
- 【POJ】2891 Strange Way to Express Integers
http://poj.org/problem?id=2891 题意:求最小的$x$使得$x \equiv r_i \pmod{ a_i }$. #include <cstdio> #inc ...
- 【POJ】3974 Palindrome
http://poj.org/problem?id=3974 题意:求s的最长回文串.(|s|<=1000000) #include <cstdio> #include <cs ...
- JS中的专业术语
本身虽然是学技术出身,但.....此处省略N个字符 1.Namespace 命名空间 允许开发人员在一个独特, 应用相关的名字的名称下捆绑所有功能的容器. 2.Class类 定义对象的特征.它是对象的 ...
- POJ 1654 Area(水题)
题目链接 卡了一下精度和内存. #include <cstdio> #include <cstring> #include <string> #include &l ...