求解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];四、实际上,多重网格法运行速度快的一个主要原因是在经过了粗网格的迭代校正后,重新回到细网格上使用迭代法,初值较只在原始细网格上使用迭代法的迭代值更接近真值。
参考文献:
[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),下面是等式约束.通常解法是引入拉格朗日算子,这里使用来表示算子,得到拉格朗日公式为 是等式约束 ...
随机推荐
- iOS LoginDemo
// // ViewController.m // FicowLoginDemo1 // // Created by Ficow on 15/11/12. // Copyright © 2015年 F ...
- aapt命令介绍及常用命令实践
D:\>aapt -h ERROR: Unknown command '-h' Android Asset Packaging Tool Usage: aapt l[ist] [-v] [-a] ...
- Oracle 使用小计(4)
1.oracle字符串分割函数split )定义split_type类型: CREATE OR REPLACE TYPE split_type IS TABLE OF VARCHAR2 (4000) ...
- python安装setuptools
http://wenku.baidu.com/link?url=I-FCVFpHbP2oyCt1Gjb1X5xHk4P475dVU3j8rWd4b4VSuD-Wd86LdbC7bdYskZdtDfGK ...
- ccc 多点触控
研究了一天,多点触控的点无法保存,只能模拟多点触控了 cc.Class({ extends: cc.Component, properties: { wheelStick:{ default:null ...
- C语言数组删除增加一个元素
malloc,realloc,calloc一直很头疼,这次笔试题需要在数组后重新分配新的空间的代码是: //删除函数,删除ptr中的ptr[in]元素,n是数组原来的长度. void rmv(int ...
- HDU2138 & 米勒拉宾模板
题意: 给出n个数,判断它是不是素数. SOL: 米勒拉宾裸题,思想方法略懂,并不能完全理解,所以实现只能靠背模板.... 好在不是很长... Code: /*==================== ...
- ACM 最少步数
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...
- 10秒钟安装 Vim编辑器,5分钟浏览常用命令 2015.10.25
首先我想说,vim与vi的命令几乎相同,,所以学习编辑命令时很轻松,排除扩展相关,以及自动补全等配置的使用在外30秒钟安装 Vim编辑器,5分钟浏览常用命令环境:虚拟机Ubuntu:安装vim并浏览命 ...
- Codeforces Beta Round #4 (Div. 2 Only)
A题,水题,准1Y,第一次CE了..CF里,CE没有罚时.. B题,直接模拟.. #include <cstdio> #include <string> #include &l ...