matlab分析具体问题,MATLAB求解PDE问题分析.doc

MATLAB求解PDE问题(1)——概述、例子(转)

(2011-07-20 16:48:45) oolbox 提供利用有限元方法求解偏微分方程的GUI以及相应的命令行函数。利用该工具箱可以求解椭圆型方程、抛物型方程、双曲型方程、特征值方程以及非线性方程。PDE Toolbox的功能非常强大,网上有许多利用PDE Toolbox解决各种物理问题的论文,还有专门介绍工具箱的参考书。

网上的例子虽然很多,但是大部分是介绍PDE工具箱自带的一些例子,这些例子中解的区域,边界条件是PDE工具箱已经编写好的,直接调用就可以。对于该如何自己设定求解区域及边界条件,却很少有人涉及。网上搜索发现只有刘平在博客中详细介绍过求解区域的设定。下面以一个椭圆型方程的例子来详细说明求解的各个步骤,希望对大家能有所帮助。

设要求如下形式的椭圆方程的解:

按照PDE的要求,将方程化为标准形式

求解后的图像如下,第一幅图是解的图像,第二幅是计算误差。从第二幅图可以看到,计算的最大误差是10-3方量级。

通过这个例子我们可以基本掌握PDE求解偏微分方程的步骤和方法,后面我将详细介绍如何设置区域及边界条件。掌握了区域和边界条件的设定,就可以轻松求解遇到的偏微分方程了。图后是附带的matlab命令以及注释,并提供m文件附件下载,下载后解压即可。希望能对大家有所帮助。

下面是编写的求解上述方程的matlab语句及说明:

g='mygeom';b='mybound';

定义区域,边界条件。mygeom是定义区域的子函数名,函数名可根据自己的需要取定,区域的确定规则由pdegeom函数说明,注意pdegeom函数只是说明如何定义区域,它并不直接确定区域;mybound是定义边界条件的子函数名,与区域类似,边界的确定规则由函数pdebound确定。后面我会详细介绍区域和边界的取法。

[p,e,t] = initmesh(g);

网格初始化,此处也可以写成[p,e,t] = initmesh('mygeom');这样可以省略上面的语句

[p,e,t] = refinemesh(g,p,e,t);[p,e,t] = refinemesh(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,f),其中b为边界条件,此处也可以写为'mybound',p,e,t,为网格参数,c,a,f,为方程的参数,后面也可以加猜测值以及各种属性。

pdesurf(p,t,U)grid on;xlabel('x');ylabel('y');zlabel('u')colorbarview([60 30])

画出解的图形。注意,为了让结果更直观一些,使用view函数调整了视点位置。大家可以自行调整视角,满意即可。

exact=p(1,:).^2+p(2,:).^2-p(1,:).*p(2,:).*(p(1,:)+p(2,:));exact=exact';figurepdesurf(p,t,U-exact)grid onxlabel('x');ylabel('y');zlabel('error')colorbarview([60 30])

由于方程有解析解,我们可以比较数值计算的误差。如果能求得解析解,我们也不会设计各种方法求数值解了,因此,这一步在大多数情况下是用不上的,这里只是为了比较计算结果,验证计算的精度。

MATLAB求解PDE问题(2)——确定几何区域

(2012-06-14 16:20:38)

函数pdegeom释义如下:

参数为0个时,即没有参数时,返回边界的段数;

参数为1个时,即只有bs,返回输出区域边界的参变量范围矩阵d;

参数为2个时,返回每段边界长度为s时的坐标。

函数参数意义bs表示指定的边缘线段,如矩形边界为四段,三角开边界肯定为三段…。s为第bs段线段弧长的近似(估计)值,bs与s可以为向量,但是要一一对应,即bs为几个值,s也得为几个值。输出变量[x,y]是每条线段起点和终点所对应的坐标。这个函数编制的关键是,函数内边界上的坐标((x(t),y(t))是用参变量t表示的,返回值是求得边界任意长度时的坐标(x(t),y(t))值,参量可以有很多种选法。

回到前一篇中,给定的方程的求解区域是[0,1,0,1]的一个正方形,我们将它命名为mygeom。下面我们来看下mygeom是怎么编写的。

function [x,y]=mygeom(bs

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值