MATLAB求解PDE问题.docMATLAB求解PDE问题(1) 概述、例子
MATLAB求解PDE问题(1) 概述、例子
已有2363次阅读2010-10-12 14:57 |个人分类:生活点滴|系统分类:科研笔记 |关键词:MATLAB PDE Toolbo椭圆型方程 有限元方法
MATLAB PDEofolbox提供利用有限元方法求解偏微分方程的 GUI以及相应 的命令行函数。利用该工具箱可以求解椭圆型方程、抛物型方程、双曲型方程、 特征值方程以及非线性方程。PDE Toolbox的功能非常强大,网上有许多利用 PDE Toolbox解决各种物理问题的论文,还有专门介绍工具箱的参考书。
网上的例子虽然很多,但是大部分是介绍 PDE工具箱自带的一些例子,这些 例子中解的区域,边界条件是PDE工具箱已经编写好的,直接调用就可以。对于 该如何自己设定求解区域及边界条件, 却很少有人涉及。网上搜索发现只有 刘平 在博客中详细介绍过求解区域的设定。下面以一个椭圆型方程的例子来详细说明 求解的各个步骤,希望对大家能有所帮助。
设要求如下形式的椭圆方程的解:
宀几+ 2(."计-4 = 0
边界条件为
y=o.//= r
.2 1仝
CA'
按照PDE的要求,将方程化为标准形式
-V -(『
其中
c- 1. ^7 = 0 * f - ・
求解后的图像如下,第一幅图是解的图像,第二幅是计算误差。从第二幅图 可以看到,计算的最大误差是10-3方量级。
通过这个例子我们可以基本掌握 PDE求解偏微分方程的步骤和方法,后面 我将详细介绍如何设置区域及边界条件。掌握了区域和边界条件的设定,就可以 轻松求解遇到的偏微分方程了。图后是附带的
MATLAB求解PDE问题(1) 概述、例子
MATLAB求解PDE问题(1) 概述、例子
matlab命令以及注释,并提供 m
文件附件下载,下载后解压即可。希望能对大家有所帮助。
x ID
x ID
下面是编写的求解上述方程的 matlab语句及说明:
g='mygeom'; b='mybo un d';
定义区域,边界条件。mygeom是定义区域的子函数名,函数名可根据自己的需 要取定,区域的确定规则由pdegeom函数说明,注意pdegeom函数只是说明如 何定义区域,它并不直接确定区域;mybound是定义边界条件的子函数名,与区 域类似,边界的确定规则由函数 pdebou nd确定。后面我会详细介绍区域和边界 的取法。
[p,e,t] = in itmesh(g);
网格初始化,此处也可以写成[p,e,t] = initmesh('mygeom');这样可以省略上面的语 句
[p,e,t] = refin emesh(g,p,e,t);
[p,e,t] = refin emesh(g,p,e,t);
加密网格两次,需要加密几次重复几次即可,根据具体问题确定加密次数
U= assempde(b,p,e,t,1,0,'2*(x+y)-4');
调用assempde函数计算方程的数值解,assempde函数的详细用法可以参考MATH 网站或者PDE的使用指南。常用的用法是[u,res]=assempde(b,p,e,t,c,a,,其中b 为边界条件,此处也可以写为’mybound', p,e,t,为网格参数,c,a,f,为方程的参 数,后面也可以加猜测值以及各种属性。
pdesurf(p,t,U)
x ID
grid on;
xlabel('x');ylabel('y');zlabel('u')
colorbar
view([60 30])
画出解的图形。注意,为了让结果更直观一些,使用view函数调整了视点位置。 大家可以自行调整视角,满意即可。
exact=p(1,:)A2+p(2,:)A2-p(1,:).*p(2,:).*(p(1,:)+p(2,:));
exact=exact';
figure
pdesurf(p,t,U-exact)
grid on
xlabel('x');ylabel('y');zlabel('error')
colorbar
view([60 30])
由于方程有解析解,我们可以比较数值计算的误差。如果能求得解析解,我们也 不会设计各种方法求数值解了,因此,这一步在大多数情况下是用不上的, 这里 只是为了比较计算结果,验证计算的精度。
m文件下载
MATLAB求解PDE问题(2)——确定几何区域
已有1327次阅读2010-10-12 18:58 |个人分类:生活点滴|系统分类:科研笔记 |关键词:MATLAB PD几何区域pdegeo
MATLAB求解PDE问题 来自淘豆网m.daumloan.com转载请标明出处.