APP下载

基于MATLAB GUI微积分实验教学系统的设计

2022-04-29张光辉徐秀荣

宿州学院学报 2022年3期
关键词:微积分控件菜单

任 敏,张光辉,徐秀荣

宿州学院数学与统计学院,安徽宿州,234000

数学实验为丰富数学教学内容、优化教学方法创造了良好的环境,微积分实验教学是微积分教学的重要实践环节,对发挥学生主观能动性、提高学生参与教学的程度,进而加深对数学原理和方法的理解有重要的作用[1-3]。 MATLAB 图形用户界面(Graphical User Interfaces,GUI)通过给用户提供一个界面和一些控件,结合一些可以预告的简单操作,可以创建一个供用户反复使用且操作便捷的系统平台。基于 MATLAB GUI,卜晓燕等[4]开发了数据处理的误差评定系统,黄冉等[5]设计了灰色预测系统,李宝方等[6]对数字图像仿真系统进行了研究。本文基于MATLAB GUI,设计微积分数学实验教学系统,旨在使用户以计算机为工具,通过使用系统,在操作界面友好,人机交互便捷的环境中体会数学技术的运用。

1 微积分实验教学系统设计基本思路

针对微积分理论知识体系的逻辑结构,将实验内容整合为函数与极限、微分学、积分学、无穷级数四个知识模块,基于MATLAB软件开放性和移植性好,符号计算函数丰富的特点,利用GUI的组件、图形窗口、回应等必要元素和各种函数调用,针对微积分四个知识模块中一些基本概念和理论,具体内容如表1所示,进行界面设计和程序设计,完成典型知识点和理论方法的验证性和计算型实验的开发和应用。

表1 微积分实验教学系统知识模块的主要内容

2 微积分实验教学系统平台介绍

2.1 软件平台

本系统平台基于 MATLAB(R2019a) 设计完成。在命令窗口中键入GUIDE回车,便可打开GUIDE快速入门窗口,设计者根据需要和设计习惯,选择新建GUI或打开现有的GUI设计和开发图形用户界面。微积分实验教学系统利用 GUI 向导,选择控件( UIControl) 和菜单(UIMenu)作为实验者操作的基本对象,构建实验系统界面。

2.2 基本设计原则及目标

该实验教学系统以具备初级微积分理论知识的理工科、管理类学生为用户主体,用户进入实验平台后,根据系统界面文字提示,选择按钮或菜单进行向导式实验,完成预设验证性或计算类实验任务,在此基础上,用户根据自身操作能力和兴趣,选择部分挑战性的程序设计类实验内容。在MATLAB R2019a环境下,本文设计的微积分实验教学系统主界面如图1所示。该界面从使用者和功能实现的角度出发、设计遵循简单性、一致性和习常性的基本原则[7-8], 将四个知识模块以菜单的形式呈现在顶部,一个静态文本对象在主界面左侧给初级用户必要的操作提示,主界面右侧纵向排列的4个知识模块以按钮方式链接到具体知识模块子界面。 用户可以通过按钮或菜单对象,来实现对不同知识模块访问。

图1 微积分实验教学系统主界面

在“两个重要极限可视化”界面中,布置了以下控件:1个下拉菜单,给用户提供互斥的选项清单,用户选择一个函数用来演示极限的可视化过程;2个坐标轴,分别用来呈现函数极限的动态轨迹和极限图形;3个按钮,分别用来实现绘制所选清单中函数的极限图形、动态轨迹和结束程序。通过鼠标点击该操作界面“Limit”“Trace”“Close”三个菜单,可完成和按钮相同功能的操作。如图2可视化结果。

图2 重要极限可视化界面运行结果

2.3 实验系统M文件的编译

GUI良好的交互性和便捷的操作性,是在GUI程序对数据的科学管理、共享和传递下实现的,也是该实验系统的特色之一。该实验教学系统代码编译主要涉及实现各个知识模块中数学运算

MATLAB库函数的正确调用、不同GUI之间和同一GUI内部数据共享、操作界面按钮和菜单功能实现的M文件的程序设计等,该实验系统M文件的编译。

2.3.1 MATLAB库函数调用方法

MATLAB 库函数limit,diff,int,symsum,taylor等是进行极限、微分、积分、级数求和与展开等高等数学运算最常用的函数,熟练掌握这些函数及与其有相同和类似功能的函数的调用方法、调用格式及调用格式中输入(出)参数的意义是正确完成数学运算的必要前提。用户对不熟悉的命令(函数),笔者推荐利用MATLAB命令窗口的在线帮助系统及系统附带的命令(函数)的Word文档进行查阅,帮助系统对所查命令(函数)的功能和实现方法、应用实例给出了相对完整的解释。具体操作为:

命令提示符》+help+空格+命令(函数)名(回车)

2.3.2 GUI 数据共享与界面链接

每个GUI程序都会产生与之相关的数据,这些数据可以被GUI内所有控件访问。该微积分实验教学系统存储、保存和更新每个GUI数据都是由函数guidata来实现的,数据共享是实现操作系统第1代主界面和第2代子界面,第n代子界面和第n+1代子界面之间的相互切换和链接的重要手段,也是数据管理的关节环节。本实验系统的同一GUI内部、不同GUI之间的数据共享主要是借助Handles结构体来实现的,用户可以根据需要对handles结构体添加所需要的域来完成不同数据的存储。例如在该教学实验系统中“两个重要极限的可视化”实验的GUI M文件中,以下代码实现了对下拉菜单所选清单数据的传递

handles.cho=contents{get(hObject,′Value′)};

%将下拉菜单所选数据赋给结构体handles的cho域

guidata(hObject,handles);%保存handles结构体

choi=handles.cho%访问并返回handles结构体的cho域值

该系统主界面和子界面的链接,可以在主(子)界面相应控件的Callback函数中由以下代码来实现切换。

close(gcf);set(0,′CurrentFigure′,subgui) %主界面链接到子界面subgui

close(gcf);set(0,′CurrentFigure′,maingui) %当前界面返回到主界面maingui

3 实验教学系统子模块的实例实现

本小节以实验内容“定积分的定义与计算”为例,说明该实验内容的GUI创建过程。

3.1 界面功能

用静态文本框呈现文字,引导用户在指定文本框内输入任意可积的一元函数、积分下限和上限值,按钮控件提示用户开始计算;当用户点击计算按钮或菜单后,绘制出被积函数图像,给出被积函数的一个原函数,用定积分定义法和牛顿莱布尼兹公式两种方法计算用户输入的被积函数在积分区间上的定积分,分别在指定位置给出计算结果;点击结束实验按钮或菜单后退出界面。

3.2 界面创建、控件和菜单的布置和编辑

首先,创建一个新的Blank GUI,保存为“Definition_Calculation_of_Definite_Integrals”,MATLAB自动生成两个配套文件Definition_Calculation_of_Definite_Integrals.m和Definition_Calculation_of_Definite_Integrals.fig。

然后,在布局编辑器中布置控件和设置菜单:1个坐标轴对象,用于显示被积函数在积分区间上的图形;2个按钮,用于执行开始计算和结束实验;3个可编辑文本框,用来输入被积函数、积分下限和积分上限;10个静态文本框,用来说明各控件的功能和显示计算结果。在界面最上方设置两个菜单,可实现和2个按钮相同的功能,分别用于执行积分计算和结束实验。再利用布局编辑器中菜单栏中的排列工具调整各控件位置,分别打开各控件的属性编辑器设置控件的Tag,BackGroundColor,FontSize,ForeGroundColor等属性。打开菜单属性编辑器,设置菜单Text和Tag属性。图3为“积分的定义与计算”实验的操作界面的运行前状态。

图3 “积分的定义与计算”实验的操作界面

最后,编写代码,完成数据输入/结果输出、绘图等工作。

打开Definition_Calculation_of_Definite_Integrals.m文件,编写各个具有功能实现控件的Callback文件代码。“积分的定义与计算”实验GUI的主要功能实现按钮为执行“开始计算”的按钮(Tag标识为calculatio_pushbutton),在calculation_pushbutton_Callback(hObject,eventdata,handles)文件下编译代码,实现:访问(获取)用户输入的被积函数表达式,积分上下限的值,计算被积函数的原函数,用定义计算定积分,用牛顿莱布尼兹公式计算定积分、绘制被积函数图像等任务。

当用户输入被积函数“sin(x)*cos(2*x)”,积分下限“0”,积分上限“7”后,点击“开始计算”按钮或“Integral”菜单后,实验结果如图4所示。

图4 “积分的定义与计算”实验结果

该实验为计算和验证类实验,用户可以通过反复多次输入不同的被积函数,观察计算系统返回的原函数,根据定积分定义和牛顿莱布尼茨公式两种方法的计算结果,验证牛顿莱布尼茨公式。

4 结 语

微积分实验教学系统的设计与开发,有助于学生用户借助GUI平台完成微积分课程中重要概念和定理中验证类和计算类的数学实验,在此基础上,用户根据自己的能力和兴趣,还可以进一步完成综合性的设计类扩展实验,并借助MATLAB平台学习M文件的编译,尝试GUI的开发。该实验系统对改变学生对数学理论抽象、计算繁琐的传统认识,让学生在学数学的过程中深刻体会数学的基础性和实用性,对学生使用数学语言、运用数学思维有很大的帮助。

猜你喜欢

微积分控件菜单
基于.net的用户定义验证控件的应用分析
集合与微积分基础训练
集合与微积分强化训练
追根溯源 突出本质——聚焦微积分创新题
中国新年菜单
关于.net控件数组的探讨
本月菜单
TED演讲:如何学习微积分(续)
一个“公海龟”的求偶菜单
基于嵌入式MINIGUI控件子类化技术的深入研究与应用