《毕业设计(论文)用MATLABGUI开发向心力与角速度的演示试验界面.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)用MATLABGUI开发向心力与角速度的演示试验界面.doc(16页珍藏版)》请在三一办公上搜索。
1、用MATLAB GUI开发向心力与角速度的演示试验界面摘要:向心力与角速度在中学物理教学中,占有着重要的地位。由于资源的限制和学生在做实验时的盲目性,本文通过分析向心力与角速度的关系,合理的运用控制变量法,以小球在光滑桌面上做匀速运动为例,利用MATLAB GUI模拟、设计和开发出向心力与角速度的交互式实验动画演示界面。在教学中,用控制变量法和此界面进行交互,让学生对此知识的掌握更加深刻。关键词 向心力 角速度 控制变量法 MATLAB GUIUse the MATLAB GUI to exploit the interface of demonstrative experiment of c
2、entripetal force and angular velocityAbstract: The centripetal force and angular velocity occupy an important position in physics teaching in high school, due to schools resource constraints and students blindness when doing the experiment, the paper analyzes the relationship between centripetal for
3、ce and angular velocity, a reasonable use of the control variables, with a small ball made a smooth uniform motion on the desktop, for example, using MATLAB GUI simulation, design and centripetal force and angular velocity developed experimental animation, interactive interface. In teaching, the con
4、trol variables used to interact with this interface, so that students master this knowledge is more profound.Keywords: Centripetal force Angular velocity Controlling variables MATLAB GUI目 录1引言12问题分析13实验设计23.1总体设计23.2在M文件中实现动画演示33.3界面要实现的主要功能63.4上机制作(静态)界面63.5编写界面动态功能程序74界面的实际应用95总结10参考文献11谢 辞12正文附录1
5、31引言向心力是基础力学中的重要概念,无论是在理论教学中,还是在工业中都占有着重要的地位。这个力不像以前接触过的拉力、摩擦力、弹力那么的容易理解,因为它和角速度紧密联系在一起的,如果没有了角速度,向心力也就无从谈起了,既然角速度这么重要,那我们的重心就要放在这个量上。角速度不和速度那样,速度的大小是标量,速度的方向是物体远动轨迹上的切线。虽然角速度的大小也是标量,但是它的方向却满足右手螺旋定则,这就是难以理解向心力的地方。在力学实验中需要采用现代化的教学手段千方百计地为学生提供观察物理现象的机会,提高学生的学习兴趣,培养学生思维水平和创新能力,但目前很多教学过程中只采用了简单文本投影,固定不变
6、的flash动画演示和照本宣读的教学模式。向心力与角速度的实验需要精密的仪器,例如,需要用光滑的桌面、光滑的小球、轻质的细绳等,而这有时会使实验变得困难。在做实验前,好多老师只是照本宣读的给学生讲解向心力和角速度的关系,这样学生在做实验的时候就具有盲目性,再加上学生对实验不重视,学生就不能学到应有的知识,教学效果将会大打折扣。但是把MATLAB引入力学实验,利用其可视化功能对力学实验现象比如向心力与角速度进行计算机模拟,再结合学生动手实验,就能够提高学生的学习效率与学习积极性。随着计算机技术的发展,计算机模拟在现在物理教学研究中发挥越来越重要的作用,尤其是MATLAB软件的使用。“数字信号处理
7、”双语教学、毕业设计教学、物理教学等领域中都涉及到MATLAB的应用。将MATLAB强大的科学计算与图形图像功能的完美结合将解决许多现实问题,所以MATLAB的计算与仿真应用到教学中有着非常重要的意义1。2问题分析在学习向心力以前,学生已经学习了匀速圆周运动,对匀速圆周运动有了一定的理解,知道描述匀速圆周运动快慢的物理量有线速度、角速度、周期、半径之间的关系。向心力与角速度的关系: (1)从上式中可得到:当物体的质量和做匀速圆周运动的半径不变时,向心力与角速度成正比,在此利用了控制变量法,即控制物体的质量和做匀速圆周运动的半径不变,改变物体的角速度来观察物体向心力的变化,或者改变物体的向心力来
8、观察物体角速度的变化。在此界面的设计中,置物体的质量和做匀速圆周运动的半径不变,均为0.5kg。在做实验前,我们都有体会,那就是老师只是照着课本给我们讲一下向心力与角速度之间的关系,这样即枯燥又引不起学生的学习兴趣,或者老师只是给学生播放一些flash动画,在这些动画中物体所受的向心力和角速度是不能变化的,如果要变化,就得制作好几种动画,而这几种动画在播放的时候有没有连续性,很难从中得出向心力与角速度之间的这种正比关系。这就需要把MATLAB引入力学实验,利用其可视化功能对力学实验现象比如向心力与角速度进行计算机模拟,再结合学生动手实验,就能够提高学生的学习效率与学习积极性。3实验设计3.1总
9、体设计本文的设计思路是,先通过MATLAB实现小球在细线的牵引下做匀速圆周运动的.m文件,然后通过GUI界面,实现对各个部分文件的调用并显示,以期达到直观显示的效果。作为强大的科学计算软件, MATLAB提供了图形用户界面的设计和开发功能。图形用户界面是包括窗口、图标、菜单、工具条等的用户界面。MATLAB中的基本图形用户界面对象可分为:用户界面控制对象(uicontrol)、下拉式菜单对象(uimenu)和内容式菜单对象(uicontextmenu)。利用上述对象,可以设计出界面良好、操作简单、功能强大的图形用户界面。通过问题分析可知,要设计出提高学生学习效率的交互式实验动画演示界面、要尽量
10、减少人工的干预、即使学生不懂得程序,也可以方便的操作此界面、要使学生在使用此软件的时候感到简单、方便和高效性、要将动画和所得到的结果可视化。就得遵循简单性、一致性、习常性原则。被试验界面是以运动小球为例进行的,总的设计流程图如下:在MATLAB的.m文件中实现演示动画 分析界面要实现的主要功能上机制作(静态)界面编写界面的动态程序调试界面在程序执行的过程中,都要调用动画子函数,动画的MATLAB语言实现又占有很大的篇幅,因此把动画的MATLAB语言实现放在了总体设计方案的第一步,此算法的实现对后面的界面设计打下了基础,也为界面的实现提供了前提条件。3.2在M文件中实现动画演示在实验设计方案中给
11、出了最优指派问题综合计算平台实现的5个步骤,即给出了平台实现的框架,但并不能用这些步骤来求解最优指派问题。要实现此平台,就要逐步对这5个步骤加以解决。在设计界面前,先要将所演示的动画编写在M文件中, 并能正确运行。在M文件编写的程序,当程序在运行的时候,小球运行的角速度是不变的,也就是小球是以更定的角速度在做匀周园速运动,此时设定小球质量和做匀速圆周运动的半径都为定值,所以小球所受的向心力也是不变的。在M文件中实现此动画的部分程序如下:text(0.6,0.9,F=mrw2 m=0.5kg r=0.5m);vel_slider1=get(handles.slider1,value);%spee
12、dset(handles.edit1,string,sprintf(%3.0f,vel_slider1);set(handles.edit2,string,num2str(0.52*vel_slider12);t=0:0.1:8*pi;x=cos(t);y=sin(t);h0=line(x,y,linestyle,-,color,k,linewidth,2);%画圆,半径为1axis equalaxis off%接下来建立小球,小球的初始位置为(1,0)h1=line(xdata,1,ydata,0,marker,o,markerfacecolor,r,markersize,25,marker
13、edgecolor,g);x_line=0:0.1:1;%建立拉球直线的方程;其中x_line和y_line为直线的初始坐标;y_line=zeros(1,11);h2=line(xdata,x_line,ydata,y_line,linestyle,-,color,g,linewidth,2);speed=0.01;%speed控制小球转速,while ii=1&val=200) set(handles.slider1,value,val); set(handles.edit2,string,num2str(val_n);第一条语句用于从此编辑框中获得输入的“角速度”。第二条语句是将从编辑框
14、中获得的字符串转化为对应的浮点数值,因为从编辑框中的得到的字符是字符串。第三条语句是判断从此编辑框中输入的字符的范围。(3)开始按钮的回调函数vel_slider1=get(handles.slider1,value);%speedset(handles.edit1,string,sprintf(%3.0f,vel_slider1);set(handles.edit2,string,num2str(0.52*vel_slider12);h0=line(x,y,linestyle,-,color,k,linewidth,2);set(h2,xdata,x_change,ydata,y_chang
15、e);vel_slider1=get(handles.slider1,value);开始按钮的回调函数在界面的设计中占有着重要的地位,因为它控制着动画的开始,在编写回调函数的时候就属它占的篇幅最大。第一条语句是从滑动条的句柄中获得小球做匀速圆周运动的角速度。为了让“角速度”、“向心力”和滑动条同步,在此回调函数中用到了第二三条语句。第四条语句用于创建动画的初始状态。第五条语句用于播放动画,在播放动画的过程中用到了drawnow函数和pause函数,这两个函数是创建动画的关键。(4)坐标轴的回调函数h0=line(x,y,linestyle,-,color,k,linewidth,2);axis
16、 equalaxis off编写此回调函数的作用就是初始化界面和显示动画画面的区域。(5)关闭按钮的回调函数即在关闭按钮的回调函数后加close(gcf);就可以关闭窗口了。保存后并运行,运行程序后会出现本文所描述的界面,刚开始的时候,在坐标轴区域只显示了如图1所示的静止图像,为了让小球做匀速圆周运动,就得给小球置一定的角速度,然后按开始按钮,这样小球就在细线的牵引下做匀速圆周运动,如图3,同时小球所受到的向心力也会显示在界面中。图3 向心力与角速度演示实验界面从图3中可以看到,此试验界面中,小球的质量和做匀速圆周运动的半径固定不变,均为“”,小球做匀速圆周运动的角速度为“”,这里的角速度只是
17、为了说明问题,是人为设定,而不是现实中真实存在的,那么小球所受到的向心力“”是由式求得的,自然这里的“向心力”也不是现实中的,只是为了说明问题3。4界面的实际应用本文设计向心力与角速度演示实验界面的目的,主要是为中学生学习此知识点而服务的,在应用此软件之前,老师可以先给学生讲一下式的含义,讲一些现实中的一些实例,让学生对向心力和角速度有一个潜意识的了解。然后老师再定量的给学生讲解向心力与角速度的关系,在定量解释的时候,就该用到此界面了。在用此界面的时候,先给学生讲明小球的质量和运动半径为定值,均为,然后运用控制变量法操作此界面4。先通过滑动条连续改变小球的运动角速度,同时观察小球所收到的向心力
18、,可以看到:当小球运动的角速度在连续变化的时候,小球所受到的向心力也在连续变化,它们的关系由式决定。改变小球运动角速度的方法还有一个,那就是直接在“角速度”的下框里输入角速度的值,当输入的角速度的值在“”时,才会有效,因为在编写程序的时候,规定角速度的范围为,如果输入的角速度的值超过此范围,或者输入的不是纯数字,那么程序就出现“”的提醒字符。同理在输入向心力的时候,向心力也有一个范围,如果输入的向心力的值超过此范围,或者输入的不是纯数字,程序也会出现超出范围的提醒字符。在做了上述的工作后,然后让学生再去实验室做实验,这样模拟实验加动手实验,想必学生对此知识点的学习和掌握会事半功倍的,提高了学生
19、的学习兴趣和学习效率。5总结本文对向心力与角速度的知识做了简单的介绍,合理的运用控制变量法,以小球在光滑做面上做匀速运动为例,利用MATLAB GUI模拟、设计和开发出向心力与角速度的交互式实验动画演示界面。在撰写论文的过程中,本文把重点放在了如何实现此交互式实验动画演示界面上。因此文章用了较大的篇幅来介绍此界面的总体设计流程图、动画演示在.m文件中的正确运行、此界面的静态设计以及各个组件的功能、编写界面动态功能程序和界面在实际中的应用,最后在附录中给出了此演示实验在.m文件中的完整程序。文章在界面的实际应用中,为了想方设法提高学生的学习效率,也渗透了一点教学设计的思想,由于知识和篇幅的限制,
20、还有不妥的地方待改进,。 参考文献1吴迪,刘军.基于MATLAB GUI的大学物理交互式演示实验动画设计J.大学物理实验,2010年,第1期:53.2罗华飞.MATLAB GUI设计学习手记M.北京:北京航天航空大学出版社,2009.8:191.3华晋,尹金花.基于GUI的干涉衍射的实验教学研究J.大学物理实验,2011年,第1期:80.4宗节保,段柳云.基于MATLAB GUI软件制作方法的研究与实现J.电子设计工程,2010年,第7期:56.谢 辞值此本科学位论文完成之际,首先要感谢我的指导老师,也是我们的任课老师王老师。王老师从一开始的论文方向的选定,到论文提纲的建立,到最后整篇论文的顺
21、利完成,都给了我非常耐心的指导。他给我提供了大量收集资料的方法和建议,告诉我应注意的细节问题,细心的给我指出不足和错误的地方,多次修改我的论文,如果没有王老师,我的论文也不会这么顺利的就能够完成。并且王老师对界面设计,尤其是功能键的设计有非常独到的见解,使我受益匪浅。王老师诲人不倦的工作作风,一丝不苟的工作态度,严肃认真的治学风格给我留下深刻的影响,值得我永远学习。在此,谨向导师王参军老师致以崇高的敬意和衷心的感谢!正文附录向心力与角速度演示实验在.m文件中的完整程序。t=0:0.1:8*pi;x=cos(t);y=sin(t);h0=line(x,y,linestyle,-,color,k,
22、linewidth,2);%画圆,半径为0.5米axis equalaxis off%接下来建立小球,小球的初始位置为(1,0)h1=line(xdata,1,ydata,0,marker,o,markerfacecolor,r,markersize,25,markeredgecolor,g);x_line=0:0.1:1;%建立拉球直线的方程;其中x_line和y_line为直线的初始坐标;y_line=zeros(1,11);h2=line(xdata,x_line,ydata,y_line,linestyle,-,color,g,linewidth,2);n=length(t);ii=1
23、;speed=0.01;%speed控制小球转速,while ii=n %建立球的旋转问题 set(h1,xdata,x(ii),ydata,y(ii); r=0:0.1:1;%建立线的旋转问题,其中r为绳的径向取值 if x(ii)=0 theta=atan2(y(ii),x(ii);%球旋转角度,在这里用到了atan2函数,这个函数很重要。 x_change=r.*cos(theta); y_change=r.*sin(theta); set(h2,xdata,x_change,ydata,y_change); else ; end drawnow %在建立动画的时候用到了drawnow函数和pause函数 pause(speed); ii=ii+1;end