数值分析课程设计实验报告.docx
- 文档编号:24179006
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:11
- 大小:379.70KB
数值分析课程设计实验报告.docx
《数值分析课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
数值分析课程设计实验报告
院系:
数学与统计学学院
专业:
信息与计算科学
年级:
11级
课程名称:
数值分析课程设计
2014年6月11日
一摘要
从设计图形用户界面的框架结构及实现人机交互人手,着重说明用MATLAB语言进行图形用户界面程序设计时数值分析算法动态演示系统界面及集成测试,并以具体实例,详细论述制作图形用户界面时回调函数的编写方法。
本文探讨了数值分析算法动态演示系统界面和系统集成及测试。
将数值分析课程设计所需要的输入和结果用GUI界面显示出来,自动生成所需要的生成报告,将结果用图形和文本输出的两种方式展示出来,方便老师的批阅同时也是学生自己一目了然。
关键词:
MATLAB;图形用户界面;动态演示;集成测试;控件设计;回调函数
二引言
MATLAB是一套高性能的数值分析和可视化的科技应用软件。
它集高效的数值分析、完备的信号处理和图像处理、功能丰富的应用工具箱为一体,构成了一个方便快捷,界面友好的用户环境,是一种适应多种硬件平台的数学计算工具,它的出现给各课程的计算机辅助教学带来了福音。
特别是它的集成图形用户界面GUIDE(GraphicalUserInterfaceDevelopmentEnvironment),包含了窗口菜单、对话框、按钮和文本等各种控件的用户界面,用户通过键盘或鼠标操作,就可以设计出具有自己独特风格的图形界面,再通过编写回调函数皆可以实现GUI与用户之间的交互,为教学课件的制作提供了极大的方便,GUIDE程序设计分两步进行,一是静态图形界面制作,二是控件回调函数编程。
1静态图形界面制作
在matlab的命令窗口中键入“guide”命令,启动GUIDE的GUI编辑器,GUI控制面板包括了所有的图形界面控件uicontrol,如按钮(PushButter)、滑动条(Slider)、单选按钮(RadioButter)、复选框(Checkbox)、文本框(EditText)、文本标签(StsticText)、下拉菜单(PopupMenu)、下拉列表框(Listbox)、双位按钮(ToggleButter)、坐标轴(Axes)等,用户选中需要的控件,拖移到空白处,即可创建出相应的控件,并通过拖拉可调整其大小,如图1所示。
图1MATLABGUI图形界面设
2编程控制GUI
在静态图形界面设计好后,用户可以通过鼠标或键盘激活这些图形对象,使计算机执行相应的动作,这些动作的执行通过回调函数Callback来实现,matlabguide编程主要考虑的是界面函数如何通过回调函数来实现,以及用什么样的方法比较方便快捷。
NumericalAnalyse.m代码中只有各个控件、菜单的回调函数原型和注释,并没有实现功能的函数体,要实现具体的功能调用需要用自己编写添加程序。
三框架,系统功能介绍以及模块功能介绍
该界面的基本框架如下:
运行后的界面为:
该界面的功能是,让各个小组运行后在菜单中依据自己之前已选题目的类型,在二级菜单中选择各个小组的题目,界面上各个文档可以载入的前提条件是各个文档编辑完成,不能更改文档标题,并且完成相应程序保存在.m文件中,即完成以下四个文档:
运行后,该界面将分别载入rtf中的函数说明,txt中的参数说明,并在界面中显示,单击‘执行’按钮后,将载入并在执行时调用f1.m中的函数,调用Callback01中的程序,一次完成所有给出值得运算,并在输出窗口显示结果在图形窗口显示相应的图形,每单击一次‘单步执行’按钮,将调用Callback_01中的程序,将一个一个的计算给出值的函数值,并在输出窗口一步一步的显示结果,在图形窗口每计算一次结果显示一个点,当单步执行到最后时,会有窗口弹出提示已进行到最后,此时,可单击‘单步执行复位’按钮,恢复初始状态,完成后,单击‘生成报告’按钮可生成相应实验题目的报告。
四算法
试验中部分按钮的代码如下:
参数说明和函数说明框代码:
name=get(hObject,'Label');%获取hObject的名字(Lable),存入name中
ifexist([[name,'.rtf']])%检查文件是否存在
handles.activex2.invoke('LoadFile',[name,'.rtf']);%载入你的rtf文件
else
set(handles.activex2,'Text','');
end
instruction='';
ifexist([[name,'.txt']])%检查文件是否存在
instruction=textread([name,'.txt'],'%s','delimiter','\n','whitespace','');%读取txt文件,存入instruction中
end
set(handles.txtParameterInstruction,'string',instruction);%将instruction中的内容传给参数说明
handles.methodname=get(hObject,'Tag');%获取你的hObject的地址
set(handles.txtTitle,'string',name);%将读取的名字传给标题
set(handles.edParameterInstruction,'string','');
set(handles.edInputFunction,'string','');
len=size(handles.methodname,2);%求出算法名称的字符串长度存入len中
no=handles.methodname(len-1:
len);%取算法名称的最后两个字符
funname=['f',no];%将函数名命名为f+算法名称的后两个字符,如f04
funname=[funname,'.m'];
ifexist(funname)%检查文件是否存在
copyfile(funname,'f.m');
end
ifexist('f.m')%检查文件是否存在
tmp=textread('f.m','%s','delimiter','\n','whitespace','');%读取txt文件,存入instruction中
单步执行按钮代码:
functionpbOnceRun_Callback(hObject,eventdata,handles)
len=size(handles.methodname,2);%求出算法名称的字符串长度存入len中
iflen<=0
%errordlg(‘errorstring’,’dlgname’)%打开显示’errorstring’信息的错误信息对话框,对话框的标题由‘dlgname’指定
errordlg('还没有选择算法,请先通过菜单选择相应的算法','提示');
return;
end
no=handles.methodname(len-1:
len);%取算法名称的最后两个字符
funname=['Callback_',no];%将函数名命名为Callname+算法名称的后两个字符,如Callback04
ifexist([funname,'.m'])%检查文件是否存在
funhandle=str2func(funname);%将上述函数的字符串转化为函数名
handles=funhandle(handles);%调用上述函数
%更新数据
guidata(hObject,handles);
end
单步执行复位按钮:
functionpbOnceRunReset_Callback(hObject,eventdata,handles)
handles=RunReset(handles);
%更新数据
guidata(hObject,handles);
functionhandles=RunReset(handles)
handles.curstep=0;%当前步数
handles.userdata=[];%用户数据,即你自己手中的数据。
str2=setEditstring(handles.ResultOutput,'',0);%清空输出框
cla(handles.axesResult);%清空图形
handles.temp=[];%用于临时保存单独步执行中间结果的全局变量
五实验及分析
实验:
以第六个实验牛顿插值算法为例
1)运行后在菜单栏选择插值法,06Newton插值法;
2)单击运行按钮,界面显示如下:
3)单击单步执行按钮后,界面显示为:
4)继续单击单步执行按钮,直到出现以下提醒:
5)单击单步执行复位按钮后,恢复到执行前的界面;
6)单击生成报告按钮后:
附,06Newton插值法的生成报告为:
06Newton插值法
这是一个算法说明;
请同学们自己写。
06Newton插值法参数说明
插值点的坐标
0.4000000.410750
0.5500000.5781501.116000
0.6500000.6967501.1860000.280000
0.8000000.8881101.2757330.3589330.197333
0.9000001.0265201.3841000.4334670.2129520.031238
1.0500001.2538201.5153330.5249330.2286670.0314290.000293
5次Newton插值多项式N(x)为:
0.41075+1.116(x-0.4)+0.28(x-0.4)(x-0.55)+0.19733(x-0.4)(x-0.55)(x-0.65)+0.031238(x-0.4)(x-0.55)(x-0.65)(x-0.8)+0.00029304(x-0.4)(x-0.55)(x-0.65)(x-0.8)(x-0.9)
分析:
通过上述实验步骤可知,该界面已达到预期效果,可以完成预期的按钮的功能,可以作为同学们使用的界面。
六结论
通过本次课程设计学习,我们基本上都能熟练地使用MATLAB做界面以及把书本上的公式通过计算机展现出来,很好地把数学与计算机结合起来。
让我们感受到数学的魅力,不单单是枯燥的公式,还可以是优美的图像,繁琐的步骤通过一个简单的循环就能够很好解决。
以前根本解决不出来的积分等问题,通过取多个值就可以得到近似值,切割越细致,越接近准确值。
还可以拟合曲线,进行方程求解,等等。
我感觉我们最大的收获就是可以使用MATLAB做一个界面,使得同学们都可以在一个平台里面运行各种数学方法,然后大家一起学习一起讨论,这样学到了很多有意思又很有用的东西。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 课程设计 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)