多重网格方法(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 -- 引进了匿名方法,在 ...
随机推荐
- Access restriction: The type Base64 is not accessible due to restriction on
java build path>把libraries中的JRE System Library删除重新导入.
- python csv.reader参数指定
- SSM-@Transactional 注释不生效
1.在applicationConext.xml 中配置事务注解驱动 <!-- 事务注解驱动 --> <tx:annotation-driven /> <!-- 配置事务 ...
- Castle.DynamicProxy的使用
.Net平台AOP技术研究 简单实现 通过继承实现 public interface ICoding { void DoSth(); } public class Coding : ICoding { ...
- java语言编程实现两个时间相差多少天、多少小时、多少分、多少秒
不多说,直接上干货! DateDistance.java package zhouls.bigdata.DataFeatureSelection.test; import java.text.Date ...
- 设置webstorm的file watch 监视scss文件
参考:http://blog.founddrama.net/2013/04/watching-compass-files-in-webstorm/ 上面红色划线部分. 特别注意arguments: 像 ...
- JavaScript 数组(Array)
//声明方式 //调用 Array构造函数创建并赋值 var users = new Array(); //new 可以省略 ); //new 可以省略 var users3 = new Array( ...
- 通用代码——makefile文件
ver=debug ifeq ($(ver),debug) TARGET = testmain_d FLAG=-g -D debug else TARGET = testmain_r FLAG=-O3 ...
- c# cook book -Linq 关于Object的比较
实际项目中经常用到 Union,Distinct,INtersect,Execpt对列表进行处理 一般来说要首先重写 Equals 和GetHashCode方法 首先看为重写的情况: namespac ...
- elasticsearch映射及分析-----3
首先我们看下不同的索引方式相同的字段指定字段类型与不指定字段类型es会怎么处理 1.不指定类型,直接创建索引及类型文档 我们看下他默认的索引映射 2.创建索引和类型时指定字段类型 这里创建了一个索引为 ...