APP下载

常微分方程的GUI仿真教学研究

2016-05-23曾庆雨田娅刘向虎徐梅

现代交际 2016年8期

曾庆雨 田娅 刘向虎 徐梅

[摘要]MATLAB是一套高性能的数值计算和可视化软件。GUI是人机交互的中介。在数学的学习过程中,部分问题是复杂抽象,难于理解的。如线性回归、常微分方程求解、二元非齐次线性方程组的几何意义等问题,在学习时是很难去琢磨的。本文试图利用MATLAB 对常微分方程的求解问题进行GUI仿真,使积分曲线的理论可视化,使理论寓于图像中,让数学问题变得更加直观、易懂。期望对今后的教改有所帮助。

[关键词]MATLAB GUI 可视化仿真 工科数学教学 常微分方程

[中图分类号]G434 [文献标识码]A [文章编号]1009-5349(2016)08-0196-02

运用软件仿真教学提高效率,是近年来的一个热门话题,贺玉珍,李萍,王红梅等结合现代化的教学方式及手段,提出了自己的看法。

MATLAB是美国Mathworks公司推出的一个高性能的科技计算软件,它集数值计算、符号运算、图形图像处理、编程等多种功能于一体,应用非常广泛。图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口),是指采用图形方式显示的计算机操作用户界面,主要由组件、图形窗口、回应三部分构成,可以进行数据可视化编程。

使用MATLAB创建GUI仿真学习中所涉及的数学问题,可以充分提高数学学习的兴趣难度,降低学习的难度。采用GUI进行仿真教学,为教学提供一个以实验探索和发现为特征的交互环境,充分激发学生对数学学习的兴趣,调动学生主动学习积极性,也可以达到提高应用计算机来解决数学问题的能力。

一、可视化原理

利用MATLAB GUI软件将抽象的数学理论进行可视化可分为以下四步:

①分析界面所要求实现的主要功能和明确设计任务;

②在稿纸中绘出界面草图;

③按绘制的草图,制作静态的界面,并对其进行基本检查;

④使用回调函数,编写界面上相应控件功能的程序。

二、仿真演示

通过MATLAB的强大功能,采用GUI设计常微分方程解(积分曲线)的可视化仿真界面,直观地体会积分曲线的概念,掌握常微分方程的求解结果是一个函数,并能直观地观察这个函数的性质。

(一)主要功能及设计任务

主要功能:计算一阶常微分方程的通解和给定初值的特解,并绘制出特解的图形,即对应微分方程的一条积分曲线,以便理解积分曲线的概念,直观地看出积分曲线是一个函数。

设计任务:计算一阶常微分方程的特解,仿真积分曲线。

(二)仿真界面草图构思

①建立4个静态文本框,用于标注相应控件的提示;

②建立4个动态文本框,2个用于输入常微分方程和所满足的初值条件,2个用于显示常

微分方程的通解与特解;

③建立3个按钮分别用于常微分方程求解,清空界面和结束程序;

④建立1个坐标轴对象,用于显示积分曲线;

⑤建立8个面板,用来装载控件分组;

⑥建立4个单选按钮,2个用来对坐标轴的网格线进行设置,2个用对坐标轴的边框进行设置。

(三)制作静态界面

图1 界面布局图

如图1所示,利用GUIDE创建GUI,在GUI对象设计区中按草图构思布置控件,使用几何位置排列工具对控件的位置进行调整。并设置相应控件的相关属性,使其容易记忆,方便编辑和维护。

①分别将4个静态文本框的string设置为相应的提示,其中text1,text2,text3,text4的string分别设置为:输入常微分方程,输入初始值条件,输出方程的通解,输出方程对应初值的解;

②将四个动态文本框的string设置为空,tag不变;

③将3个按钮的string分别设置为:求解,清空,退出;

④将8个面板的title分别设置为:初始值解的图像,输入区,函数显示区,坐标设置,网格线设置,边框设置,初始值解的显示区,操作区;

⑤将网格线设置面板里的2个单选按钮的string分别设置为:grid on,grid off。将边框设置面板里的2个单选按钮的string分别设置为:box on,box off。保存文件名为gui_equation。

(四)仿真程序编写

编写代码完成程序中变量的赋值,输入/输出及绘图等工作,打开gui_equation文件,系统自动生成M文件。

①编写求解按钮的回调函数(CallBack)如下:

f1=get(handles.edit1,'string');f2=get(handles.edit3,'string');

h1=dsolve(f1,f2);ezplot(h1)

h3=char(h1);set(handles.edit2,'string',h3);

h=dsolve(f1);h2=char(h);

set(handles.edit4,'string',h2);

②编写清空按钮的回调函数(CallBack)如下:

set(handles.edit1,'string',[]);set(handles.edit2,'string',[]);

set(handles.edit3,'string',[]);set(handles.edit4,'string',[]);

Cla; grid off

③编写退出按钮的回调函数(CallBack)如下:

ss=questdlg(‘你真的要退出吗?'‘退出信息窗口!'‘不,我还想看看!'‘是的,我要退出!'‘是的,我要退出!');

switch ss

case‘是的,我要退出!'

delete(handles.figure1);

End

④编写string设置为grid on单选按钮的回调函数(CallBack)如下:

c=get(handles.radiobutton3,'value');

if c==1

axes(handles.axes1);grid on

set(handles.radiobutton4,'value',0);

end

⑤编写string设置为grid off单选按钮的回调函数(CallBack)如下:

c=get(handles.radiobutton4,'value');

if c==1

axes(handles.axes1);grid off

set(handles.radiobutton3,'value',0);

end

另外两个单选按钮按相同方法编写。

(五)仿真结果

图2 仿真图

图3 退出界面图

运行程序后在输入常微分方程的文本框中以Dy=f(t)的形式输入微分方程,以为例;在输入初始值条件后面的文本框中以y(a)=b的形式输入初值,以y(4)=7为例;如图2,点击求解按钮运行仿真界面,求解微分方程在对应初值条件下的解,并绘制解的图形;点击清空按钮清空界面,等待下次求解方程的输入;点击退出按钮产生退出对话框,选择相应信息退出(如图3)。

三、总结

本文通过对常微分方程的仿真,使学生充分理解积分曲线的含义,感受常微分方程解的性质。使抽象的、难以想象的问题转化为可视化的界面,引发学习数学的兴趣,调动自主学习的积极性。不仅如此,也让学生了解到很多抽象数学问题都可以通过GUI编程来实现,有极大的作用。它可以使很多难以想象的数学问题变得具体、形象、直观。如函数图形的绘制、空间解析几何应用、微分与导数、集何的运算与Venn图的展示等,都可运用MATLAB GUI进行仿真,让学生更深刻地理解数学中的抽象概念。

【参考文献】

[1]贺玉珍.计算机软件类课程体系改革初探[J].现代计算机(专业版),2008,(03):56-57.

[2]李萍.计算机软件专业主干课程群探索[J].无锡职业技术学院学报,2005,(04):4-5+8.

[3]王红梅,于德海,孙卫佳.计算机软件专业课程体系改革的几点思考[J].长春工业大学学报(高教研究版),2003、(04):63-65.

[4]陈垚光,毛涛涛,王正林等.精通MATLAB GUI设计(第3版)[M].北京:电子工业出版社,2013.

[5]同济大学数学系编.高等数学(第六版)[M].北京:高等教育出版社,2007.

责任编辑:杨柳