计算方法中数值实验平台开发.doc_第1页
计算方法中数值实验平台开发.doc_第2页
计算方法中数值实验平台开发.doc_第3页
计算方法中数值实验平台开发.doc_第4页
计算方法中数值实验平台开发.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I 目目录录 目录.I 摘要II ABSTRACTIII 前言 IV 1引言1 1.1背景 1 1.2意义 1 1.3文献综述 2 2系统相关设计技术 .4 2.1MATLAB 简介4 2.2MATLAB 可视化技术 5 3系统设计 .10 3.1系统定义 .10 3.2系统目标 .10 3.3系统设计概述 .10 4详细设计 .12 4.1系统界面设计 .12 4.2演示类实验 .14 4.3验证性实验 .16 5实验结果 .26 6全文总结 .28 致谢 30 参考文献 .32 II 摘摘要要 为了解决 计算方法 教学的枯燥乏味,学生学起来毫无兴趣的问题,本 课题主要研究基于 MATLAB 下的计算方法数值实验平台的开发问题。 本文把计算方法实验划分为演示类、验证类和探索类,为每类实验精选了若干 个实例,并以 MATLAB 作为开发工具,将这些实例集成为一个实验系统。 本文还介绍了 MATLAB 可视化编程的主要技术,计算方法数值实验平台 软件的设计以及主要模块的程序代码。 关键词关键词:数学教学,计算方法,数值实验,MATLAB III Abstract In order to resolve the problem of tedious teaching of computing method and the problem of that students do not have any interest in learning, the main concern of this topic according to MATLAB is the stage designing of numberical experiment in computong method. The experiment of computing method can be devided into the show type according to this artical,the verification type and the investigate type,we choose many examples for every experiments type,and we put all these experiments into one experimental system with the designing tool of MATLAB. It also talking about the most important technology of the visible programming in MATLAB in this article,the designing of software in the stage designing of numberical experiment in computong method and the main mold pieces of the procedure code. Keywords:the teaching of mathematic,computing method,numbercal experiment, MATLAB IV 前前言言 本文研究了 基于MATLAB下的计算方法数值实验平台的设计与开发,全文 共6章。 第1章介绍了数学教学的日益不能适应现代化发展的现状,以及数学教学新方 法GNA的基本内涵 ,探讨了在 计算方法 教学中,采用这一新教学法的可行 性,提出了开发基于 MATLAB下的计算方法数值实验平台的意义。对所查阅与 参考的文献资料、书籍作了一个简单的综述。 第2章介绍了本次设计所采用的开发工具 MATLAB,着重介绍了 MATLAB 的可视化编程的基本知识。 第3章给出计算方法数值实验平台系统的定义,提出了系统最终需要实现的目 标,给出了系统的总体框图。 第4章详细地介绍了系统界面的设计与程序代码,每个实验的数学模型和程序 代码。 第5章给出了系统运行的结果。 第6章为全文总结, 总结了本次毕业设计的目的和意义,以及有哪些地方可 以改进。重点 谈到了我在本次毕业设计中的收获和感想,还有它对于我整个本 科阶段的意义。 1 1 引引言言 1.11.1背景背景 我们以往的数学学习,由于受到计算工具的制约,往往偏重于归纳、演绎能 力的训练,而忽视了创造与数学建模能力的培养。如此一来,使数学教学成为 了纯理论的 教学,让不少工科学生对数学学习失去了兴趣,即使是学过数学的人, 很少能将数学知识应用到自己的工作中去,而常常发出“数学究竟有什么用 ”的 质疑。 随着计算机科学与技术的飞速发展,计算机应用已经渗透到各个领域,正 在逐渐影响 人们的工作方式和生活方式。为了 提高学生学习数学的积极性,培 养学生用数学的能力,利用计算机进行实时的辅助教学(即CAI 教学) 、辅助 实验已成为 现在颇为流行的教学方式。 计算方法数值实验平台开发 这一课题,正是在教育面向现代化,培养 创新型人才这一时代要求下提出的。 1.21.2意义意义 计算机的普及,使数学的教学方式、数学的学习方式都有了较大的改变。 在数学教学上,国际上流行的GNA 教学法 12,受到广大数学教育工作者 的关注。 GNA 数学教学法指的是: 1.Graphic(图形的):先观察函数的图形,对问题有一些直观了解; 2.Numeric(数值的):再查看数值计算结果,对问题提出的某些结论; 3.Algebraic(代数的):最后对所提出的结论作严格的数学证明 这种教学法克服了传统数学教学 “重理论、轻实验 ”的缺陷,对培养学生 素质可起到较好的效果。 在数学学习上,提倡 “问题实验观察猜想分析”的学习模式,目 的仍然是为了培养学生的能力。 2 新数学教学方式与数学学习方式都需要借助于计算机做数学实验, 计算 方法1011可以说是数学知识与计算机应用结合得最为密切的一门基础课,也 是最适合采用新教学方式与学习方式来组织教学的。 对于信息 类、计算机类的学生 来讲,程序设计能力 、科学计算能力 、数学 建模能力 这三大能力的培养尤为重要。而 计算方法 这门课对于这三种能力 的培养,可以起到很好的作用。 以 MATLAB 为软件平台,在计算方法 的 教学中,除传授知识外,突出离散、递归、归纳等数学方法,注重算法设计与数 值计算技术能力的培养,是这门课程教学中要解决的核心问题。 要解决好这一核心问题,在 教学中应突出计算方法 这门课程的 应用特 色,可适当压缩过多过深的公式推倒和原理性分析,以原理和公式结论的应用 为突破口,用 MATLAB 程序设计来实现各种复杂的数值计算问题。尤其是引入 一些典型案例,将 计算方法的学习, 程序设计的学习融入 到案例的研究和解决 过程中。因此, 计算方法 这门课的实验教学就显得相当重要,开发这样的实 验平台,对于学生素质培养,提高教学质量具有一定的应用价值。 1.31.3文献综述文献综述 文献12讲述了现在数学教学的现状: 由于受到计算工具的制约,我们 以往的数学学习,往往偏重于归纳、演绎能力的训练,而忽视了创造与数学建模 能力的培养。如此一来,使数学成为了一门纯理论的科学,让不少工科学生对 数学学习失去了兴趣。 要改变这种现状,需要采用一种新的数学教学法,凭借 现代教育技术的支撑的 GNA 方法。GNA 数学教学法是指: 1.Graphic(图形的): 先观察函数的图形,对问题有一些直观了解;2 .Numeric(数值的):再查看数 值计算结果,对问题提出的某些结论; 3.Algebraic(代数的):最后对所提出的 结论作严格的数学证明。 文献3-7介绍了大量 MATLAB 基本知识与高级技术。 给出了许多 MATLAB 应用实例,其中融入了作者的实际工作经验和体会,目的是帮助我们 了解 MATLAB 在有关领域的应用,从而引导我们更好地应用MATLAB 来解 3 决实际问题。 文献8利用大量实例对 MATLAB 的应用做了详细介绍,使我们能够通过 对本书的学习,熟练地掌握MATLAB 的应用技巧。本次设计的用户界面就是建 立在该书 118-120 页的实例 52 的基础上,通过改进得来的。 文献9对 MATLAB 在动态仿真系统开发,图形技术的应用以及可视化编 程作了较多的介绍,对开发MATLAB 下的应用程序很有帮助。 文献1011是关于计算方法的经典教材,书中 介绍了大量数值实验的数学 模型与算法,本 次毕业设计中用到的算法和数学模型都出自于这两本书。 4 2 系系统统相相关关设设计计技技术术 2.12.1MATLABMATLAB 简介简介 MATLAB 语言3的特征如下:用 MATLAB 写程序,犹如在一张演算纸上 排列公式和求解问题,编程效率很高,因此称它是一种演算纸式的科学工程计算 语言。同时由于其在动态仿真系统、特殊函数和图形等领域表现出一般高级语言 难以比拟的优势 9,可以作为数学教学的辅助工具。 早期的 MATLAB 版本只提供了一个命令屏幕和一个图形屏幕,用户只能在 这样两个屏幕之间作切换,如果用户在命令屏幕上给出一条MATLAB 绘图命 令,则要想得出相应的图形, MATLAB 会自动地切换到图形屏幕上,如果再给 出一条命令,则会自动地切换到原来的命令屏幕,虽然MATLAB 可以在两个 屏幕之间作自动的切换,但使用起来还是极其不便的,尤其想同时显示出多种曲 线时更是如此。此外, MATLAB 早期的版本并不适于开发用户友好的图形界面 程序。 随着多窗口 (Windows)技术的发展, MATLAB 的用户及 Math Works 公司 的开发者们逐渐意识到在多个窗口界面下运行MATLAB 的必要性和可行性。 1992 年 Math Works 公司推出了具有创造性意义的MATLAB4.0 版本,并于次 年(1993 年)正式推出了 MATLAB4.0 版的 PC 机版本,以配合日益流行的 Microsoft Windows 一起使用。 MATLAB 4.0 版本一出现,立即引起了使用者和 程序开发人员的极大兴趣,因为它使得在其它语言环境下看起来十分复杂的 Windows 图形界面设计显得非常的容易和方便。 MATLAB 4.1 版本的出现更为 图形界面的设计提供了新方法,比如在该方法下提供了标准的联机帮助系统的设 计方法,并提供了若干个标准的对话框可以直接调用,在对话框控制元件上又增 加了新的内容。 图形用户界面( Graphical User Interafce,简称 GUI)无疑是人与计算机交互 操作的重要方式,既形象生动,又使用户的操作更加方便灵活。所谓图形用户界 5 面是指由窗口、菜单、对话框等各种图形对象组成的用户界面,目前最为流行 的 MATLAB6.5 版本提供的用户界面设计功能 更为强大。 2.22.2MATLABMATLAB 可视化技术可视化技术 1. 图图形形窗窗口口 (figure) 如果用户想打开一个新的图形窗口,则可以选择MATLAB 命令窗口中的 file/new/figure 子菜单, 可获得一个标准的 MATLAB 图形窗口 。当然如果采用 下面的命令将使得打开窗口的形式更富于变化。 窗口句柄 = figure( 属性 1,属性值 1,属性 2,属性值 2,) 用户可以通过这样的方式很容易地打开一个新的图形窗口,并返回该窗口的 句柄,使得以后能够简单地对该窗口的属性作进一步的修 改。建立起来窗口 (亦即成功地获得窗口句柄 )之后,用户还可以调用 figure( )函数来显示该窗口, 并将之设定为当前窗口 ,其调用格式为 figure( 窗口句柄 ),其实,即使这里 引用的窗口句柄不存在,也可以使用这一命令,它的作用是对这一窗口句柄生成 一个新的窗口,并将之定义为当前窗口。 在 MATLAB 环境下允许用户同时打开多 个窗口,而每一个窗口应该对应 于自己的句柄,用户可以调用gcf ( )函数来获得当前窗口的句柄,以便对 它进 行下一步的操作。 有 Windows 使用经验的用户会很自然地体会到Windows 程序界面和其它 程序的一个重大的区别在于Windows 程序一般有较美观的操作界面,例如它有 意义十分显然的菜单提示和对话框显示,这样用户往往在没有说明书的情况下也 能较好地使用该应用程序。 MATLAB 除了提供标准的菜单之外,还允许用户设计出自己所需要的菜单 系统,其菜单设置是由 uimenu()函数来完成的,该函数的调用格式为 菜单句柄 = uimenu(窗口句柄,属性 1,属性值 1,属性 2,属性值 2,); 注意,这里的属性名称应该 用单引号括起来 。各个属性的名称和取值内容 将在后面陆续介绍。如果想在某一个菜单条下定义一个新的子菜单条,则可以使 6 用下面给出的命令格式 子菜单句柄 = uimenu(菜单句柄,属性 1,属性值 1,属性 2,属性值 2,); 其中 uimenu()函数的属性有多种,但最基本的必须有以下八条。 1 菜菜单单条条的的提提示示名名称称 (Label):可以是一个任意字符串,在菜单项提示 的字符串中允许用户使用 ,b=get(l2,value);,c=get(l3,value);,ff); p2=uicontrol(parent,h0,style,pushbutton,position,370 25 50 30,string, 关闭,callback,close);%设置关闭按钮 l1=uicontrol(parent,h0,style,listbox,position,10 330 90 90,string,请选 择|龙格现象 |其它,value,1,max,0.5,min,0);%设置三个列表框以供选择 l2=uicontrol(parent,h0,style,listbox,position,10 190 90 90,string,请选 择|复化求积 |分段逼近 |割圆术|曲线逼近 |其他,value,1,max,0.5,min,0); l3=uicontrol(parent,h0,style,listbox,position,10 50 90 90,string,请选 择|收敛性初值 |其它,value,1,max,0.5,min,0); 13 f1=uicontrol(parent,h0,style,text,string,验证,fontsize,15,position,10 420 90 30);%设置三个静态文本显示小标题 f2=uicontrol(parent,h0,style,text,string,演示,fontsize,15,position,10 280 90 30); f3=uicontrol(parent,h0,style,text,string,探索,fontsize,15,position,10 140 90 30); ptgrid=uicontrol(gcf,Style,toggle,Position,210,25,50,30,String,Grid,C allBack,grid);%设置网格按钮 ptbox=uicontrol(gcf,Style,toggle,Position,290,25,50,30,String,Box,Ca llBack,box);%设置边框按钮 还有一个小的选择调用程序ff.m: if a=2 fun4;%调用龙格现象程序 end if b=2 fun7;%调用复化求积程序 end if b=3 fun5;%调用分段逼近程序 end if b=4 fun1;%调用割圆术程序 end if b=5 fun6;%调用曲线逼近程序 end if c=2 14 fun3;%调用收敛性初值程序 end if c=3 fun2;%调用其他程序 end 4.24.2演示类实验演示类实验 对于演示 类实验,主要介绍 龙格现象。 4 4. .2 2. .1 1 数数学学模模型型 我们根据区间 a,b上给出的节点作插值多项式Ln(x)近似 f(x),一般总认为 Ln(x)的次数 n 越高逼近 f(x)的精度越好,但实际上并非如此。这是因为对任意 的插值节点,随着 n 的增大, Ln(x)不一定收敛到 f(x)。20 世纪初龙格 (Runge)就给出了一个等距节点插值多项式Ln(x)不收敛到 f(x)的例子。因此 我们把这种高次插值的病态性质成为龙格现象。 对于被插函数,取等距节点,)55( 1 1 2 x x y)10, 1 ,0(5iixi 利用拉格朗日插值公式 11 () nn j i ij ij j i xx yy xx 作出在-5,5上的图象(作图时,可适当增加一些点处的函数值,以)( 10 xLy 改善图象的质量),并与被插函数的图象进行比较,可以发现以下 2 1/(1)yx 现象: 在的附近,与偏离得很远;而且随着节点数的增5x )( 10 xLy 2 1 1 y x 加,这种偏离会越来越严重。 这说明用高次插值多项式 Ln(x)逼近 f(x)的效果并不好,因而通常不用高次 15 插值,而用分段低次插值。 4 4. .2 2. .2 2 程程序序代代码码 fun4.m %作被插函数图象 x=-5:1:5; y=1./(1+x.2); plot(x,y,r); n=max(size(x); %计算向量 x 所含的点数 hold on%固化图形屏幕 z=-5:0.005:5; %给定需计算函数值的点 m=max(size(z); %计算向量 z 所含的点数 %计算拉氏插值多项式在 z 处的函数值 for k=1:m L(k)=0; for i=1:n t=1; for j=1:n if j=i t=t*(z(k)-x(j)/(x(i)-x(j); end end L(k)=L(k)+t*y(i); end end plot(z,L,b) %作拉氏插值多项式的图象 title(龙格现象的动画演示 ); 16 hold off%释放固化的图形屏幕 4.34.3验证性实验验证性实验 在验证性实验 类里,主要介绍牛顿插值、分段线性逼近、割圆术、 复化 求积等。 4 4. .3 3. .1 1 数数学学模模型型 1.牛顿插值多项式 牛顿插值多项式 ,计算某点函数值 ,并估计误差。根据均差定义,把x 看成 a,b上一点,可得 f(x)=f(x0)+fx,x0(x-x0) fx,x0=fx0,x1+fx,x0,x1(x-x1) fx,x0,xn-1=fx0,x1,xn+fx,x0,xn(x-xn) 只要把后一式代入前一式,就得到 f(x)=f(x0)+fx,x0(x-x0) +fx0,x1,x2(x-x0)(x-x1)+ +fx0,x1,xn(x-x0)(x-xn-1) +fx,x0,xn(x-x0)wn+1(x)=Nn(x)+Rn(x) 其中 Nn(x)=f(x0)+fx0,x1(x-x0) +fx0,x1,x2(x-x0)(x-x2)+ +fx0,xn(x-x0)(x-xn-1) (3.1) Rn(x)=f(x)-Nn(x)=fx,x0,xnwn+1(x) (3.2) 由(3.1)确定的多项式 Nn(x)显然满足初值条件,且次数不超过n,它就是形 如(3.1)的多项式,我们称 Nn(x)为牛顿( Newton)均差插值多项式。它比拉格 朗日插值计算量省,且便于程序设计。 17 (3.2)为插值余项,由插值多项式唯一性可知。它具有一般性,对f 是由离 散点给出的情形或 f 倒数不存在的时候均适用。 2.分段线性逼近 所谓分段线性插值函数就是通过插值点用折线段连接起来逼近f(x).设已 知节点 a=x0=x(i) break else i=i+1; end end end plot(z,Ih,b) hold off%释放固化的图形屏幕 3 割圆术程序代码 %创建画图按纽 b1=uicontrol(h0,Units,points,style,push,. String,刘徽割圆术 ,back,0.75,0.75,0.75,. position,90,120,60,20,Callback,. cla,. strn=get(d1,string);,. n=str2num(strn);,. for side=3:n,. t=0:0.005:2*pi;,. x=cos(t);,. y=sin(t);,. plot(x,y),. 23 hold on,. for k=1:side,. theta(k)=(2*pi/side)*(k-1);,. end,. fill(cos(theta),sin(theta),r),. pause(1),. if siden,. fill(cos(theta),sin(theta),w),. end,. hold off,. end,. title(刘徽割圆术的动画演示 ),. clear all); %创建提示文本框 c1=uicontrol(h0,Units,points,. position,190 120 60 20, back,0,1,1,. string,输入正多边形边数 ,. style,text); %创建编辑框 ,输入用内接正多边形边数 d1=uicontrol(h0,style,edit,. Units,points,. position,290,120,30,20,. string,10,max,20,min,3,back,w); 4 复化求积程序代码 %fun6.m 24 %创建画图按纽 b3=uicontrol(h0,Units,points,style,push,. String,曲边梯形逼近 ,back,0.75,0.75,0.75,. position,90,70,60,20,Callback,. cla,. strn=get(d3,string);,. index=max(size(strn);,. kk); %创建提示文本框 c3=uicontrol(h0,Units,points,. position,170 70 100 20, back,1,0,0,. string,输入对区间等分的正整数数组 ,. style,text); %创建编辑框 ,输入对区间等分的正整数数组 d3=uicontrol(h0,style,edit,. Units,points,. position,290,70,30,20,. string,2 4 6 8 10,back,w); %f.m function y=f(x) y=exp(x); %kk.m %绘制阶梯形逼近曲线梯形的动画 ,计算阶梯形面积 a=0; b=1; x=a:0.0005:b; 25 y=f(x); for i=1:1:index plot(x,y,*r) %作被积函数图象 hold on sum(i)=0.0; step(i)=(b-a)/n(i); for j=1:1:n(i) u(j)=a+step(i)*(j-1); v(j)=f(u(j); u(j+1)=a+step(i)*j; sum(i)=sum(i)+v(j)*step(i);%计算阶梯形面积 fill(u(j),u(j),u(j+1),u(j+1),0,v(j),v(j),0,b)%用蓝色填充阶梯形 end pause(2) %让图象显示暂停 2 秒 if iindex fill(x,y,w) %用白色擦去前面的阶梯形 end hold off end title(阶梯形逼近曲边梯形 )%为图象加上标题 %输出区间等分数与阶梯形面积 table=n,sum; disp( 等分数 阶梯形面积 ) disp(table) 由于毕业设计的时间有限,我尚未完成探索性实验部分的设计工作。 26 5 实实验验结结果果 经过一段时间的调试,计算方法试验平台运行效果见图 5-1,图 5-2,图 5-3,图 5-4,图 5-5,图 5-6。 图 5-1 试验平台的初始状态 图 5-2 龙格现象的动画演示 图 5-3 牛顿插值多项式的 演示 图 5-4 分段线性逼近 的动画演示 27 图 5-5 割圆术的动画演示 图 5-6 复化求积的 动画演示 通过测试,系统 预期的功能 都基本实现。 28 6 全全文文总总结结 由于受到计算工具的制约,我们以往的数学教学,往往偏重于归纳、演绎能 力的训练,而忽视了创造与数学建模能力的培养。如此一来,使数学成为了一门 纯理论的科 学,让不少工科学生对数学学习失去了兴趣。本次毕业设计的目的 是想找到一个新方法,使数学教学不再象以前那么困难,让更多的人可以从数学 的学习过程中获取知识,锻炼能力。使数学教学在培养学生归纳、演绎能力的同 时,也使创造与数学建模能力得到训练。 基于MATLAB下的计算方法数值实验平台软件的设计与开发,其目的就是 为了解决数学教学现阶段所存在的种种问题,提高数学教学质量,培养学生能力。 这个软件基本上达到了设计要求。 本次次毕业设计的首要任务是弄清各种 计算方法数值实验的 本质,也就是 理解它们的数学原理, 充分利用 MATLAB强大的图形功能去揭示其数学本质, 将每个实验编写成 MATLAB程序,最后用一个 友好的用户界面 把这些实验程序 集成起来。 此次毕业设计的重点是界面的设计 。首先是要将各种各样的用户界面设计 的仔细观察一下, 从中寻找灵感,然后自己构思一个既达到本次毕业设计要求, 又能充分体现人性化和个人特点的用户界面。其次是如何用简单的程序将其实 现,其难点是MATLAB中文件调用时的接口设计,这个花费了我大量的时间和 精力,最终还是在 老师的指导下才得以顺利完成。 说实话,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论