多重网格方法(Multigridmethod)
多重网格方法是解微分方程的方法。这个方法的好处是在利用迭代法收敛结果的时候速度特别快。并且,不管是否对称,是否线性都无所谓。它的值要思想是在粗糙结果和精细结果之间插值。
前面介绍了Gauss–Seidel方法和Jacobi 方法,现在再用这两个方法来举例。尽管Gauss–Seidel (GS)方法converge更快一些,但其实对于维度很高的系统都很慢。Multigrid(MG)方法的思路是先把问题粗糙化,把原网格投影到一个比较简单的新网格上计算,等到快速收敛以后再经由Interpolation(插值)返回原来的系统。
对于某个工程数学问题(如泊松方程),可以归纳为线形方程Ax = b, A为n X n矩阵。那么,最终目的是得到所谓的x = A^(-1)b。定义e(t) = x – x(t),当e(t)为小于某个值的时候,可以认为xconverge到了合适的值。但实际上我们比较的是相邻的值。
把A非奇异分解A = B – C,
Bx – Cx = b
x = B(-1) Cx + B^(-1) b
并分开求解x
Bx(t+1) - Cx(t)= b
x(t+1) = B^(-1) Cx(t) + B^(-1) b -(1)
把形如B^(-1) C的矩阵称作迭代矩阵,用M表示。
容易发现,
x(t+1) – x = Mx(t) + B^(-1) b – x = Mx(t) +Mx = M (x(t) – x) -(2)
以上式子与(1)式等价。
另外可令N = B^(-1):
x(t+1) = Mx(t) + Nb - (3)
不同的迭代方法其实就是A的不同分解法,反映到(3)式就是取不同的M和N值。
比如,在GS方法中B = D – L, C = U, 则(3)式为:
x(t+1) = (D - L)^(-1)Ux(t) + (D - L)^(-1)b - (4)
分析发现,当n的数值比较大时,以上收敛是极其缓慢的。假设p(i) 是序号为i的原系统有限元基函数(i = 1, 2, … , n),q(i)是粗糙化的网格(i = 1,2, … , m m<n).
一种粗糙化方法是构造矩阵H,使p = H * q, H为m X n矩阵。令A’ = HAH^T, x’ = Hx, b’ = Hb. 则 A’ x’ = b’ 是一个m维粗化的网格系统。
更加具体来说,对于一个k维的问题,如果k小于一个指定的维数,那么直接用jacob等方法解救可以了。否则,粗糙化为更低的维度比如变为原来的二分之一,最后再把维数变回来。把mesh粗糙化的过程叫做Downv-cycle (从k维到k/2维), 反之叫Up v-cycle.(从k维到2k维)。
多重网格方法(Multigridmethod)的更多相关文章
- 多重网格法简介(Multi Grid)
原文链接 多重网格法是一种用于求解方程组的方法,可用于插值.解微分方程等. 从专业角度讲多重网格法实际上是一种多分辨率的算法,由于直接在高分辨率(用于求解的间隔小)上进行求解时对于低频部分收敛较慢,与 ...
- pro-engineer&UG
Pro/Engineer操作软件是美国参数技术公司(PTC)旗下的CAD/CAM/CAE一体化的三维软件.Pro/Engineer软件以参数化著称,是参数化技术的最早应用者,在目前的三维造型软件领域中 ...
- GPU加速库AmgX
GPU加速库AmgX AmgX提供了一条简单的途径来加速NVIDIA GPU上的核心求解器技术.AmgX可以为模拟的计算密集型线性求解器部分提供高达10倍的加速度,特别适合于隐式非结构化方法. 它是一 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
随机推荐
- 可输入的 Combox(DropDownList)
aspx页面中需要可以输入的combox,在网上找了一个js的插件,效果图如下:
- 3d Max 2013安装失败怎样卸载3dsmax?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- (转) IP子网划分
原文:http://blog.csdn.net/birdie_l/article/details/77994610 子网划分公式计算法 实例一 实例二 心算思路总结: B类公式算法举例: 总结:此表 ...
- Collections练习之按照字符串长度进行排序
不多说,直接上干货! 代码需求 想从 [abcde, cba, aa, zzz, cba, nbaa] 变成 [aa, cba, cba, zzz, nbaa, abcde] CollectionsD ...
- javascript典型实例
你真的已经搞懂JavaScript了吗? 昨天在著名前端架构师Baranovskiy的博客中看到一个帖子<So, you think you know JavaScript?> 题目一 ...
- .NET面试题5
常见面试题目: 1. const和readonly有什么区别? 2. 哪些类型可以定义为常量?常量const有什么风险? 3. 字段与属性有什么异同? 4. 静态成员和非静态成员的区别? 5. 自动属 ...
- 浅析正则表达式模式匹配的 String 方法
在JavaScript代码中使用正则表达式进行模式匹配经常会用到String对象和RegExp对象的一些方法,例如replace.match.search等方法,以下是对一些方法使用的总结. Stri ...
- 四、Oracle loop循环、while循环、for循环、if选择和case选择、更改读取数据、游标、触发器、存储过程
数据库的设计(DataBase Design): 针对于用户特定的需求,然后我们创建出来一个最使用而且性能高的数据库! 数据库设计的步骤: 01.需求分析 02.概念结构设计 03.逻辑结构设计 04 ...
- Hibernate课程 初探一对多映射3-3 单向多对一的测试
public static void testManyToOne(){ Student stu1 = new Student("小明","男"); Studen ...
- Angular搭建脚手架
1.安装CLI: cnpm install -g @angular/cli //卸载: npm uninstall -g @angular/cli npm cache clean 2.检测是否成功 ...