张光辉,任 敏
(宿州学院数学与统计学院,安徽 宿州 234000)
基于MATLAB GUI的数值分析实验系统设计
张光辉,任 敏
(宿州学院数学与统计学院,安徽 宿州 234000)
目的 针对数值分析课程理论性较强,对具体算法进行形象化演示,以提高教学效果。方法 对数值分析课程体系进行整合,分析不同知识模块,建立基于MATLAB GUI平台的实验教学系统。结果 以MATLAB软件的GUI为平台,建立实验教学系统设计的基本原则及目标,对课程的插值与拟合、数值微分/积分、微分方程(组)数值解,线性方程(组)数值解,非线性方程(组)数值解等五大主要相对独立的知识模块进行综合设计和开发。完成主、子界面之间的切换与链接,同一GUI文件不同回调函数间的数据传输等关键问题,结合具体实例演示说明GUI设计在数值分析实验系统中的应用。基于MALAB GUI所建立的数值分析实验系统具有良好的交互性和实用性。结论 学生可以借助MATLAB软件的GUI平台求解和实践数值分析的经典问题和算法,体会数学知识的实用性,提高学生学习数值分析的兴趣和效果。
数值分析实验;教学系统;MATLAB GUI
数值分析实验课是数值分析课程的重要实践环节,在综合性本科院校的众多理工科专业中已广泛开展,该课程有助于提升学生利用计算机求解各种数学问题的动手能力,促进大学生对数学由“学”到“用”的转变有积极的推动作用[1-4]。数值分析相关算法理论性和实践性都较强,MATLAB具有强大的数值计算及数据可视化能力,同时界面设计(MATLAB GUI)技术可以方便地构建友好的人机交互系统界面,使用户的操控变得灵活且方便。本文基于MATLAB GUI构建数值分析实验教学系统。利用该系统,一方面,用户可以直观地感受和查看数值分析各种相关算法在GUI平台上的实现效果;另一方面,可以更深入地研究GUI实验教学系统本身,学习GUI系统的开发、完善及改进[5-8]。
1.1 实验教学系统平台简介
MATLAB GUI即图形用户界面,是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。控件(UIControl)和菜单(UIMenu)是GUI的两大基本对象,利用GUI向导构建仿真系统界面时,GUI设计会保存为两个文件:1个是m文件,包含控制GUI的回调函数代码;1个是fig文件,包含对GUI和GUI控件的描述。基于GUI设计过程中系统生成的m文件框架,用户通过自己编写相关代码,对原有结构进行完善或改进,实现面向用户特定需要的功能。
1.2 基本设计原则及目标
数值分析实验教学系统按照数值分析课程内容分为插值与拟合、数值微/积分、微分方程(组)数值解、线性方程(组)数值解、非线性方程(组)数值解五大主要相对独立的知识模块,借助MATLAB强大的计算绘图功能,每个模块针对相关内容进行实验系统的设计及开发[9-11]。该实验教学系统以用户为主体,使用户通过界面上的按钮和菜单一方面可以完成预定的实验任务,另外也可以根据自身兴趣和专业需要,重新设计实验内容和修改界面设计及实验参数,完善或改进实验,设计符合自己特定需要的实验系统操作界面。另外,借助该系统将数值分析相应的抽象的理论知识在动手实验操作的过程中内化为用户认知结果,充分体现了系统的实用性。在MATLAB R2009a环境下,运行GUI,选择空白模版,单击OK按钮,便可进入系统进行数值分析实验教学系统主界面[12-14]。数值分析实验教学系统的整体主界面效果如图1所示。
图1 实验教学系统主界面 图2 微分方程数值解实验界面
该界面主要部分包括1个Static Text对象和5个pushbutton对象。左边的Static Text对象用于提示用户进入该教学系统的相应操作,右边pushbutton对象对应于对该课程不同的知识模块的选择。
1.3 3个关键问题
(1)M文件编写
打开M文件编辑器,单击函数图标,可以看到各个对象的回调函数、创建函数或打开函数等对系统设计及开发需要重点操作的选项,通过选择相应选项可跳到相应位置进行程序设计及编辑。根据不同模块的不同设计目标,进行相应的计算复杂性好的代码编写,并及时保存非常关键。
(2)主、子界面之间的切换与链接
在相应知识模块的pushbutton按钮的Callback函数用代码close(gcf);set(0,'CurrentFigure',subgui)来实现由主界面GUI向相应知识模块的子界面GUI的链接。主界面上部添加了UIMenu菜单对象,用来实现对不同知识模块的分类、选择和执行。菜单及相关子菜单的设计,需要编写回调函数以实现具体的功能。
(3)同一GUI文件不同回调函数间的数据传输
借助handles结构,该结构可以存储GUI对象信息和一般变量,其基本语法结构为
Handles.var_name=var_val%将变量值var_val存入Handles结构,变量名为var_name
Guidata(hObject,handles)%更新handles结构数据
Get_val=Handles.var_name %提取变量名为var_name的变量值var_val以备后续使用
为了更直观地展示如何使用MATLAB GUI构建数值分析实验教学系统,下面通过微分方程(组)数值解及线性方程(组)数值解子模块的两个实例,来介绍整个实验教学系统的实现。
解:第一步,框架设计,在布局编辑器中布置控件,使用几何位置排列工具对控件的位置进行调整,界面设计如图2所示。
图3 微分方程数值解实验结果界面 图4 求解线性方程组实验界面
该界面主要有2个按钮,分别用来求解方程和结束程序;2个坐标轴对象,用于对微分方程的数值解进行可视化绘图;4个可编辑文本框,用来输入初始时间、终止时间,步长和初始条件;4个静态文本框,用于标识相应控件的提示。
第二步,设置各个控件的相关属性;建立菜单,用来求解微分方程和关闭图形,其中包括一级菜单file,在其下设置两个子菜单solve和close,执行求解和关闭图形功能。
最后,针对所求解微分方程,在M-FileEditor中编写相关控件的Callback回调函数代码完成程序中的求解和绘图等工作。
图3显示的是采用初始时间、终止时间和初始条件及等步长的默认值运行程序结束后,所得的GUI界面。由图3可知,用Euler法、改进的Euler、Runge-kutta法和函数解析解得求解结果进行了比较,Euler法的精度较差,改进的Euler和Runge-kutta法在解的精度上有较大的改进。
例2 用Guass消去法求解线性方程组AX=b实例。
解:首先构思框架,布置控件,调整位置,界面设计(图4)。
首先,该界面布置两个按钮,分别用来开始答题和结束程序;12个静态文本框,用于显示相应控件的提示及显示求解结果;其次,设置各个控件的相关属性;建立菜单,用来求解线性方程组和结束答题,其中包括一级菜单file,在其下设置两个子菜单solve和close,执行求解和关闭图形功能。最后,针对所求解线性方程组编写代码完成程序中的求解和显示求解结果等工作。
图5 线性方程组有唯一解结果界面 图6 线性方程组无解结果界面
图5、图6为对线性方程组有唯一解、无解实验实例所得结果,由结果界面可以看出,线性方程组解的情况的判定及结论可以很清楚地显示出来。
基于数值分析实验教学系统的开发及实践,是培养和提高学生从学数学到用数学的动手能力与创新意识的需要,学生可以借助MATLAB软件的GUI平台求解和实践数值分析的经典问题和算法,亲身体会到数学知识在社会各领域、各行业中的应用,从而改变对数学的认识,培养及开发学生对数学“学以致用”的意识及能力。
[1]朱伟.将数学实验的思想融入大学数学教学中的思考[J].重庆邮电大学学报(自然科学版),2008(S1):96-98.
[2]曹蓓,杨虎.重构数学实验体系与大学生数学创新能力培养[J].中国大学教学,2010(11):68-69.
[3]许志刚.模糊综合评价法在高校数学实验教学质量评价中的应用[J].实验室研究与探索,2009(28):110-112.
[4]黄宽娜,刘徽,李木华.基于信息技术的高等数学实验教学模式研究[J].西南师范大学学报(自然科学版),2011(36):210-214.
[5]朱婷婷,赵林.基于MATLAB的信息隐藏课程的仿真实验设计[J].实验技术与管理,2009(26):87-89.
[6]袁海燕.应用型人才培养模式下《数值分析》教学改革的几点探讨[J].教学理论,2012,11(03):133-134.
[7]李宝方,邢玉清.基于MATLAB GUI 的数字图像仿真系统设计[J].计算机与数字工程,2014,42(11):2177-2180.
[8]唐世星.基于MATLAB的高等数学实验图形用户界面系统开发[J].实验室探索与研究,2012,31(09):201-204
[9]万中,韩旭里.数值分析课程教学的新认识及改革实践[J].数学教育学报,2008,17(02):65-67.
[10]曾繁慧,高雷阜.基于MATLAB的“数值分析”教学改革研究[J].中国电子教育,2008,12(01):48-52.
[11]吴勃英,王勇.数值分析课网络实验平台建设体会[J].大学数学,2007,23(03):13-14.
[12]冯崇岭,刘升,陈国龙,等.MATLAB在数值分析课程教学与实验中的应用[J].淮北煤炭师范学院学报(自然科学版),2008,29(01):88-91.
[13]张光辉,任敏.MATLAB平台上一些物理现象的仿真研究[J].德州学院学报,2013,29(04):31-33.
[14]张光辉,冯曼,李茹.用Matlab软件优化数值分析课堂教学的探讨[J].蚌埠学院学报,2015,4(03):138-141.
[责任编辑:毛微曦 英文编辑:刘彦哲]
Design of Numerical Analysis Experimental System Based on MATLAB GUI
ZHANG Guang-hui,REN Min
(College of Mathematics and Statistics,Suzhou University,Suzhou,Anhui 234000,China)
Objective Numerical analysis is a stronger theoretical subject,and to improve teaching effect of specific algorithm needs visual demonstration.Methods The numerical analysis course system is integrated,and an experimental teaching system based on MATLAB GUI is established for different knowledge modules.Results On the platform of MATLAB GUI,the design principles and objectives of experimental teaching system are established.The integrated design and development are fulfilled for the main relatively independent knowledge modules,such as interpolation and fitting,numerical differential/integral,differential equations(group)numerical solution,linear equations(group)numerical solution,and nonlinear equations(group)numerical solution.The key issues,such as the switch and link between the main and sub interface,the data transmission of different callback function of the same GUI,are completed.The application of GUI in teaching of numerical analysis experiment combined with specific examples is illustrated and the system has good interactivity and practicability.Conclusion Students can use MATLAB software GUI platform to solve and practice classical problems and algorithms of numerical analysis,and experience the usefulness of mathematical knowledge.It is helpful to improve students' learning interest and effect of numerical analysis.
numerical analysis experiment;teaching system;MATLAB GUI
宿州学院教学研究项目(szxy2016jy25;szxy2015jy09);宿州学院特色教研室项目(szxytjys201302)
张光辉(1980-),男,河北保定人,讲师,硕士研究生,研究方向为研究算法设计与图像处理。
TP 273
A
10.3969/j.issn.1673-1492.2017.09.010
来稿日期:2016-12-14