您的当前位置:首页应用Matlab辅助微分方程数值解法教学

应用Matlab辅助微分方程数值解法教学

2024-03-04 来源:乌哈旅游
第27卷 第4期 2007年8月

桂林电子科技大学学报

JournalofGuilinUniversityofElectronicTechnologyVol.27,No.4Aug.2007 

应用Matlab辅助微分方程数值解法教学

阳莺

(桂林电子科技大学数学与计算科学学院,广西桂林 541004)

󰀁

摘 要:灵活运用Matlab软件中的一些科学计算的工具箱能对微分方程数值解法这门课程的教学起到很好的辅助作用。通过带有点源奇性的泊松方程为例,阐述了利用Matlab中的“pdetool”工具箱来实现有限元方法求解这一偏微分方程的具体步骤。实例表明,利用Matlab软件中的工具箱来辅助微分方程数值解法教学,有助于学生进一步深入学习算法,也有益于教师在课堂有限的时间内,传授更为丰富的知识和提供更多的信息。关键词:微分方程数值解法;Matlab;计算机辅助教学

中图分类号:G420    文献标识码:C    文章编号:1673-808X(2007)04-0321-03

UsingMatlabtoassisttheteachingofnumerical

solutionofdifferentialequations

YANGYing

(SchoolofMathematicsandComputingScience,GuilinUniversityofElectronicTechnology,Guilin541004,China.)

Abstract:FlexibleapplicationofsometoolboxesonscientificcomputinginMatlabcanprovidegoodassistancetotheteachingofnumericalsolutionofdifferentialequations.TheexampleofthePoissonequationwithpointsourcetypeofsingularitiesisgiventoillustratethestepsofapplyingthefiniteelementmethodtosolvedifferentialequa-tionsusingthe'pdetool'toolbox.SomeadvantagesaswellasremarksareshownofusingMatlabtoassisttheteachingofnumericalsolutionofdifferentialequations.

Keywords:numericalsolutionofdifferentialequations;Matlab;computerassistedinstruction

  微分方程数值解法在数值分析中占有十分重要的地位,科学与工程上的许多问题都归结为微分方程的数值解问题。作为一门课程,微分方程数值解法不但在数学类专业,而且在其他理工科专业的研究生和大学生中开设[1,2]。对于数学类专业的大学生而言,这门课程主要介绍常微分方程和偏微分方程的一些基本的数值方法,目的是让学生了解如何在电子计算机上应用这些方法求解一些微分方程的定解问题。由于这门课程中算法的理论性很强,在介绍一个算法之前往往要花很多的课时来介绍数学基础知识,因此教师在介绍算法在计算机上的实现时往往就只能蜻蜓点水,点到即止了。学生在学习算法时常感到枯燥无味,提不起兴趣。Matlab作为一种科学计算软件,以它的简单易学、操作方便、直观灵活等特点受到数

󰀁收稿日期:2007-03-12

学工作者的青睐。掌握Matlab软件中的一些工具箱

的操作和灵活运用,对微分方程数值解法的教学起到很好的辅助作用[3,4]。利用这些工具,教师可以用图文并茂的教学方式引导学生逐步了解深奥、抽象的数学理论,让学生逐渐感受这些数值方法在解决科学和工程中的实际问题时所发挥的巨大作用。

1 应用举例

下面以带有点源奇性的泊松方程为例,介绍如何利用Matlab中的pdetool工具箱来实现求解这一偏微分方程的有限元方法的各个步骤。1.1 模型问题

考虑具有如下边界条件的泊松方程:

基金项目:新世纪广西高等教育教学改革工程重点立项项目(GX061019)

作者简介:阳莺(1976-),女,湖南邵阳人,博士,主要研究方向为偏微分方程数值解.                     桂林电子科技大学学报                2007年8月322

-󰀁u=󰀁,in󰀂,u=0,on󰀂󰀂.

(1)

单下的RefineMesh选项,继续进行网格加密。

(5)方程求解。在Slove菜单中选择SlovePDE选项,即可对问题(1)进行求解。以上为求解问题(1)的主要步骤,在求解过程中还可以输出中间结果和最终结果。如需要输出网格的信息,执行Mesh->Ex-portMesh,对弹出对话框按OK键即把网格数据输出到MATLAB工作环境中。这时,在Matlab命令窗口下键入“p”后回车,显示按编号排列的节点坐标;键入“后回车,显示三角形单元的顶点编号;键入“t”e”后回车,显示边界线段的数据信息。最终解的输出也可以类似进行.除此以外,pdetool还可提供丰富多彩的图形输出方式(见图1和图2)。比如,最终解的输出可采用多种形式.在Plot菜单中单击Parameters选项,即弹出PlotSelection对话框。若选择contour,则可生成并显示解的等值线图;选择Arrows,则可生成并显示解的矢量图;选择Height(3-Dplot),则可生成并显示解的三维图。

此外,对于有限元计算而言,比较解析解与最终解之间的误差不仅能检验数值计算结果的正确性,还可验证理论结果,具有重要的意义。在Matlab软件中,解析解与最终解的误差图的输出也十分简单。单击Plot菜单中Parameters选项,打开PlotSelection对话框,在Height行的Property下拉框中选useren-try项,然后在输入框中键入问题(1)的误差u-(-log(x)/2/pi),单击Plot按钮就可以看到解的绝对误差图形。值得注意的是解的绝对误差会随着网格的加密而逐渐减少。

以上介绍的是一个椭圆方程的例子,对于抛物方程和双曲方程,也可利用pdetool工具箱实现有限元方法求解。对于另一类求解微分方程的数值方法-差分方法,Matlab也提供了相应的软件,具体可参考Matlab的相关资料。

[4]

  这是一个具有点源奇性的偏微分方程,在物理上u表示电势。方程的右端󰀁为Dirac-Delta函数。󰀂为

求解区域,这里不妨取为󰀂=[-1,1]2。有限元方法求解偏微分方程大致可分为以下几步:

(1)给出求解区域上的网格剖分。

(2)由方程的系数和右端得到网格离散下的线性代数方程组。

(3)求解方程组得到离散解。

以上三个步骤如果用C语言或Fortran语言编程实现的话,需要上千行的代码,花费时间太长。对于教学而言,只需要了解这一方法,没有必要去编写完整的程序。Matlab中的pdetool工具箱以图形界面提供了方程的求解过程,简单易学、操作方便,并且可以输出中间及最终结果,便于对照比较,进一步理解理论。下面将给出具体的实现过程。

1.2 利用pdetool工具箱窗口实现求解过程

在Matlab的命令窗口输入pdetool后回车,就可以打开了pdetool的工具箱窗口。以下为利用该工具箱求解问题(1)的过程。

(1)设置求解区域。单击Draw菜单下的Rectan-+”,在大致(0,0)的gle/square选项,此时鼠标变成“

位置单击鼠标右键同时拖动鼠标到适当位置松开,绘制矩形。双击所绘制的矩形,打开ObjectDialog对话框,输入Left为-1,Bottom为-1及Width,Height为2,然后单击OK按钮,就可以绘制出求解区域󰀂=[-1,1]2。注意对于圆形的求解区域只需要选择Draw菜单下的Ellipse/circle选项,其他操作类似。(2)定义边界条件。单击Boundary菜单下的BoundaryMode选项,图形边界变红,逐段双击边界,打开BoundaryCondition对话框,输入边界条件。本问题为Dirichlet条件,输入h=1,r=0,然后单击OK即可。

(3)设置系数和右端。单击工具栏上的PDE按钮,即弹出PDEspecification的对话框。本例中选择Elliptic方程,方程系数为:c=1.0,a=0.0,f=cir-clef.其中circlef是Matlab中生成右端函数󰀁的文件的名称。

(4)生成网格剖分。单击Mesh菜单下的InitializeMesh选项,可进行初始网格剖分。这时在PDETool-Box窗口下方状态栏内显示出初始网格的结点数和三角形单元数。如果需要网格加密,可点击Mesh菜图1 网格剖分图第4期              阳莺等:应用Matlab辅助微分方程数值解法教学               323

2 Matlab辅助教学

2.1 利用Matlab辅助教学的优势

(1)提高效率,节约时间。Matlab软件中包含了大多数微分方程数值解法中介绍的数值方法,大大节省了教师编写教学软件的时间。教师使用相关软件辅助课堂教学,学生也可以利用软件进行自学。对于自学能力强的学生,可以在Matlab代码上进行修改,进一步深入学习算法。这样既可减少重复劳动,又节约了教学时间,有益于教师在课堂有限的时间内,传授更为丰富的知识和提供更多的信息。

前沿问题,具有很好的作用。

2.2 利用Matlab辅助教学的注意事项

(1)Matlab软件中的工具箱虽然易于操作,但它仍有大量的参数需要了解。教师在使用前必须熟悉相关变量与理论算法之间的关系,演示时注意向学生说明。

(2)Matlab软件演示算法的过程与理论上算法的步骤仍存在一些距离,教师在教授时要注意演示的步骤并给出适当的解释和说明。比如有限元方法有一个重要而又复杂的步骤是由方程的系数和右端得到网格离散下的线性代数方程组。而matlab演示时只需要输入系数和右端的表达式,对于线性代数方程组是如何形成并没有得到体现。教师在这里可进行补充说明,并利用matlab的命令窗口输出结果举例说明问题。

3 结束语

每个教师都有自己的教学特点和教学风格,在教学过程中,教师既可利用Matlab软件辅助教学,使教

图2 解的图形显示

学丰富多彩,同时也要避免过分依赖这一手段。教师须结合自己的实际,根据自己的教学经验,把握重点,灵活使用,一定能够成功地将Matlab软件应用于微

分方程数值解教学之中。

参考文献:

[1] 陆金甫,关治.偏微分方程数值解法[M].北京:清华大学出版

社,2004:187-260.

[2] 胡健伟.微分方程数值方法[M].北京:科学出版社,1999:312

-423.

[4] MORDECHAISHACHAM.Bookreview,scientificcomputing

withMatlab[J].Computerphysicscommunications,2004:183-185.

[4] 王沫然.MATLAB6.0与科学计算[M].北京:电子工业出版

社,2001:324-337. 

(2)形象生动,新颖直观。Matlab软件具有简单易学、操作方便的特点。该软件提供了大量的图形界面,计算结果可在命令窗口以字符形式输出,也可用图形形式显示。教师使用相关软件包辅助课堂教学,可以使理论与实例更好地结合起来,变抽象为具体,变静态为动态。这样不仅降低了学习的难度,而且增加学生学习的趣味性。

(3)开阔视野,深化教学。除了经典的数值方法之外,对于一些当前在工程界应用的热门方法,Mat-lab软件也提供了一些简单的例子,如适合于求解奇性问题的有限元自适应方法等[4]。在教学中可适当向学生介绍这些新方法,对于开阔学生视野,了解

责任编辑英文编辑

林建玲  陆小明  

因篇幅问题不能全部显示,请点此查看更多更全内容