偏微分方程的MATLAB解法

2010-07-10 06:03
时代农机 2010年5期
关键词:工具栏对话框边界条件

李 明

(长江大学 信息与数学学院,湖北 荆州 434023)

1 前言

偏微分方程定解问题有着广泛的应用背景。人们用偏微分方程来描述、解释或者预见各种自然现象,并用于科学和工程技术的各个领域[1]。然而,对于广大应用工作者来说,从偏微分方程模型出发,使用有限元法或有限差分法求解都要耗费很大的工作量,才能得到数值解。现在,MATLAB PDE Toolbox已实现对于空间二维问题高速、准确的求解过程。

2 Matlab解偏微分方程

MATLAB提供了两种方法[2]解决PDE问题,一是pdepe函数[3],它可以求解一般的PDEs,具有较大的通用性,但只支持命令行形式调用。二是PDE工具箱[4],可以求解特殊PDE问题,但有较大的局限性,比如只能求解二阶PDE问题,并且不能解决偏微分方程组。它提供了GUI界面,可以从繁杂的编程中解脱出来,同时还可以通过FileSave As直接生成M代码。

2.1 函数解法

pdepe函数介绍

它的调用格式为 sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)

输入参数: @pdefun:是PDE的问题描述函数

@pdebc:是PDE的边界条件描述函数

@pdeic:是PDE的初值条件

输出参数:sol:是一个三维数组,sol(:,:,i)表示ui的解,换句话说uk对应x(i)和t(j)时的解为sol(i,j,k),通过sol,我们可以使用pdeval()直接计算某个点的函数值。

实例讲解

例:试求解下面的偏微分

其中,F(x)=e5.73x-e-11.46x,且满足初始条件u1(x,0)=1,u2(x,0)=0 及边界条件

解:(1)对照给出的偏微分方程,根据标注形式,则原方程可以改写为

%目标PDE函数

(2)边界条件改写为

%边界条件函数

function[pa,qa,pb,qb]=pdebc(xa,ua,xb,ub,t)%a表示下边界,b表示上边界

(3)初值条件改写为

%初值条件函数

(4)最后编写主调函数

图1 结果图

2.2 偏微分方程的pdetool解法

2.2.1 pdetool介绍pdetool提供的用户图形界面(GUI)解法的使用步骤如下:

(1)在 Matlab命令窗口运行 pdetool,出现 PDE Toolbox界面。

(2)用鼠标点一下工具栏上的“PDE”按钮,在弹出的对话框中定义偏微分方程。

(3)用鼠标点一下工具栏上的区域按钮,在下面的坐标系中画出偏微分方程的大致定解区域。

(4)双击(3)中画出的大致区域,在弹出的对话框中精确定位定解区域。

(5)用鼠标点一下工具栏上的边界按钮“坠Ω”,画出区域的边界。

(6)双击坐标系中的区域边界,定义偏微分方程的边界条件。

(7)用鼠标点工具栏上的剖分按钮,对求解区域进行剖分。

(8)如果求抛物型或双曲型方程的数值解,还需要通过“solve”菜单下的“parameters…”选项设置初值条件。

(9)用鼠标点一下工具栏上的“=”按钮,就画出偏微分方程数值解的图形。通过“solve”菜单下的“Export Solution…”选项可以把数值解输出到Matlab的工作间。

(10)如要画出数值解的三维图形,需要设置“plot”菜单下的“parameters…”选项。

2.2.2 实例讲解

例:解Poisson方程-△u=f,边界条件为齐次Dirichlet类型。

第一步:启动MATLAB,键入pdetool,按回车键确定便可启动GUI,然后在Options菜单下选择Grid命令,打开栅格。栅格的使用,能使用户容易确定所绘图形的大小。

第二步:分步完成平面几何造型:R1-C1-E1+R2+C2。用菜单或快捷工具,分别画矩形R1、矩形R2、椭圆E1、圆C1、圆C2.画圆时,首先选中椭圆工具,按鼠标右键并拖动即可,或者在按Ctrl的同时,拖动鼠标也可绘制圆。然后在Set formula栏,进行编辑并用算术运算符将图形对象名称连接起来,或删除默认的表达式直接键入R1-C1-E1+R2+C2。若需要,还可进行储存,形成M文件。

选择Boundary菜单中Boundary Mode命令,进入边界模式.单击Boundary菜单中Remove All Subdomain Borders选项,去除子域边界.如果想将几何信息和边界信息进行存储,应选择Boundary菜单中的Export Decomposed Geometry,Boundary Cond’s…命令,将它们分别存储于g,b变量中,通过MATLAB形成M文件。

第三步:选取边界,单击Boundary菜单中Secify Boundary Conditions…选项,打开Boundary Conditions对话框,输入边界条件.本例取缺省条件,即将全部边界设为齐次Dirichlet条件,边界颜色显示为红色。

第四步:选择PDE菜单中PDE Mode命令,进入PDE模式。单击PDE菜单中PDE Specification…选项,打开PDE Specification对话框,设置方程类型。本例取缺省设置,类型为椭圆型,参数 c,a,f分别为 1,0,10.

第五步:选择Mesh菜单中Initialize Mesh命令,进行网格剖分。

第六步:选择Mesh菜单中Refine Mesh命令,对网格加密。

第七步:选择Solve菜单中Solve PDE命令,解偏微分方程并显示图形解。

第八步:单击Plot菜单中Parameters…选项,打开Plot Selection 对话框,选中 Color,Height(3-D Plot)和 Show mesh三项.然后单击Plot按钮,显示三维图形解。

第九步:如果要画等值线图和矢量场图,单击Plot菜单中Parameters…选项,打开Plot Selection对话框,选中Contour和Arrows两项。然后单击Plot按钮,可显示解的等值线图和矢量场图。

3 结语

偏微分方程是一门实用性很强的学科。对于理论研究和实际应用中提出的偏微分方程问题,由于其边界和边界条件复杂等原因,寻求解析解是非常困难甚至不可能的,利用计算机研究相应问题的数值解法是十分必要的。编程实现从偏微分方程数值求解全过程需要很好的理论基础和编程技巧,而偏微分方程工具箱提供了研究和求解空间二维偏微分方程问题的一个强大而又灵活实用的环境.借助于这个工具,我们可以从繁琐,共性的求解步骤中解脱出来而专注于问题的核心即问题的描述,定义及简化,边界条件的确定,求解方法和精度控制的选择等,大大提高了求解效率。

[1]陆君安,尚涛,谢进,等.偏微分方程的 MATLAB 解法[M].武汉:武汉大学出版社,2001.

[2]王定江.应用偏微分方程[M].杭州:浙江大学出版社,2007.

[3]王家文,王皓,刘海.MATLAB7.0编程基础[M].北京:机械工业出版社,2005.

猜你喜欢
工具栏对话框边界条件
“玩转”西沃白板
一类带有Stieltjes积分边界条件的分数阶微分方程边值问题正解
带有积分边界条件的奇异摄动边值问题的渐近解
正常恢复虚拟机
Bootlace Worms’Secret etc.
What Is Beauty?
浅谈VB的通用对话框《CommonDialog》控件的使用
带Robin边界条件的2维随机Ginzburg-Landau方程的吸引子
设计一种带工具栏和留言功能的记事本
带非齐次边界条件的p—Laplacian方程正解的存在唯一性