目录
设计总说明 (1)
关键词 (1)
绪论 (2)
第1章课程设计正文 (3)
1.1 需求分析 (3)
1.2 界面设计 (3)
1.3 功能实现 (4)
1.4系统算法和程序代码的实现 (5)
第2章总结 (7)
参考文献 (8)
设计总说明
学习了《数值分析》和相关开发软件课程并能够熟练掌握各种算法的原理及其求解方法和特点;
1、独立进行面向对象软件的分析、设计及在计算机中进行编写代码和调试工作。培养自己独
立进行面向对象软件的分析、面向对象软件的设计及面向对象软件的实现与测试的能力;
2、通过课题的理论设计和在计算机中实验调试代码,加深对数值分析知识的理解,培养软件
开发的实践技能,提高分析解决具体问题的能力;
3、充分利用面向对象程序设计,用精要的语句设计程序,培养独立创新能力;
4、熟练运用MATLAB7开发界面美观、清晰,简单,好学,好用的计算软件;
说明书中一般包括任务的提出、方案论证、设计与计算说明、试验调试及结果的分析、结束语等内容。要求理论依据充分,数据准确,公式推导及计算结果正确。涉及到计算机软件:学生要独立完成一个软件或较大软件中的一个模块,要有足够的工作量;要写出相关的设计文件;能够进行计算机演示和给出运行结果。
在此软件中,我们运用龙贝格方法进行积分。此外,只需要在编辑框中输入上下限和含x的被积函数,点击计算按钮,得到计算结果。
关键词:MATLAB 数值分析龙贝格积分
绪论
数值分析是计算数学的一个主要部分,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。数值分析一个很强的特点就是面向计算机,要根据计算机特点提供切实可行的有效算法。因此,本次课程设计是在学习了《数值分析》和相关开发软件课程之后,为了能掌握数值分析的基本概念,结合实际的操作和设计,巩固课堂教学内容,使自己能掌握数值分析的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数值分析理论,规范、科学地完成一个小型可视化软件的设计与实现,把理论课与实验课所学内容做一综合,通过实际项目的设计、开发,培养学生独立进行计算软件的建模、在计算机中进行计算、设计、通过相关软件开发系统,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。同时,也很好的利用计算机软件来解决计算过程的复杂性和试验精度高的特点。
利用MATLAB7软件开发一个具有实用价值的可视化软件,界面美观、清晰,软件简单、好学、好用。设计者能够充分利用数学软件功能,加强实验环节,分层次处理,一方面对于数值计算一些最基本的概念和思想讲深讲透,并通过实验加强对于数值计算典型特性的理解。另一方面,对于复杂的高校率算法步详细讲解,这样,在降低数值分析理论深度的同时增加了实用性,使得使用者在课题中遇到工程计算问题时能较快上手并有效的解决。
第一章 课程设计正文
1.1需求分析
本课程设计是在学习了《数值分析》《数学建模》和相关软件开发课程之后,让我们通过实际项目的设计、开发,培养我们独立进行计算软件的建模、在计算机中进行计算、设计并通过相关软件开发系统的能力。
该龙贝格积分软件需要在界面上设计4个编辑框、4个静态文本和2个按钮,然后编写代码实现这些键的功能。在编写代码模块,关键是编写龙贝格积分原理的代码,在它其中默认加入了值为1.0e-4的精度。
图1.1
界面图
1.2界面设计
龙贝格积分软件,是完全利用MATLAB
进行制作的。该软件的主界面是用Duide 进行创建,然后在界面上的各键进行算法的编译,最终计算出结果。在界面上设计了4个编辑框、4个静态文本和2个按钮,静态文本分别有积分上下限、被积函数、计算结果,与之对应的就是编辑框,其中计算结果的为不可编辑文本框,还有计算、清空两个按钮。界面截图如图1.2:
图1.2 界面图
1.3功能实现
该软件功能是采用龙贝格方法积分,精度默认为1.0e-4。在完成该模块时,主要是编写龙贝格函数的M文件,然后是计算和清空按钮的相关代码。
现在计算∫1-1x^2 dx,如图1.3.1
图1.3.1∫1-1x^2 dx图
清空编辑框里的数据,如图3。
图1.3.2清空后的图1.4系统算法和程序代码的实现:
龙贝格积分算法:
用事后估计法控制精度|R
2n —R
n
|<ε.
龙贝格M文件程序代码:
function [q,step]=Roberg(f,a,b,eps)
if(nargin==3)
eps=1.0e-4;
end;
M=1;
tol=10;
k=0;
T=zeros(1,1);
h=b-a;
T(1,1)=(h/2)*(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b)); while tol>eps
k=k+1;
h=h/2;
Q=0;
for i=1:M
x=a+h*(2*i-1);
Q=Q+subs(sym(f),findsym(sym(f)),x);
end;
T(k+1,1)=T(k,1)/2+h*Q;
M=M*2;
for j=1:k;
T(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1);
end;
tol=abs(T(k+1,j+1)-T(k,j));
end
q=T(k+1,k+1);
step=k;
计算按钮(pushbutton2)的相关代码:
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
%str2num(edit1)+str2num(edit2)
%set(edit5,'string',num2str(str2num(edit1)+str2num(edit2)));
%x=5;
a=get(handles.edit1,'String');
b=get(handles.edit2,'String');
d=get(handles.edit3,'String');
%e=get(handles.edit4,'String');
%f2=str2num(f);
%f=inline(d);
%sym(f)
a2=str2num(a);
b2=str2num(b);
%e2=str2num(e);
[q,s]=Roberg(d,a2,b2);
%c=a2+b2;
c2=num2str(q);
set(handles.edit5,'String',c2);
guidata(hObject,handles);
清空按钮(pushbutton4)的相关代码:
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.edit3,'string','');
set(handles.edit5,'string','');
%clc;
guidata(hObject,handles);
第2章总结
通过此次课程设计,使我更加扎实的掌握了MATLAB方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。由于能力有限,部分功能尚未实现,但是我想至少我做了,也掌握了不少课外的知识。
过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了MATLAB中Gui界面制作及相关功能代码编写。
我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,但通过不断尝试终于都被解决,从中更让我懂得了如何去解决问题、开发困难,这才是最重要的。
参考文献
[1]李庆扬.王能超.易大义.数值分析.第四版.清华大学出版社.2001[2]董霖.MA TLAB使用详解.第一版.科学出版社.2008
[3]龚纯.王正林.MATLAB语言常用算法程序集.电子工业出版社.2008