Matlab仿真技术作品报告题目:MATLAB在单摆实验中的应用系(院):专业:班级:学号:姓名:指导教师:学年学期:2012~2013 学年第 1 学期2012年11月18日设计任务书摘要借助MATLAB 计算软件, 研究无阻尼状态下单摆的大摆角运动, 给出了任意摆角下单摆运动周期的精确解。
同时利用MATLAB 函数库中的ode45 函数, 求解出大摆角下的单摆的运动方程。
并利用其仿真动画形象的展现出单摆的运动规律, 为单摆实验中大摆角问题的讲解提供了较好的教学辅助手段。
关键词单摆模型;周期;MATLAB;目录一、问题的提出 (2)二、方法概述 (2)2.1问题描述 (2)2.2算法基础 (3)2.2.1单摆运动周期 (3)2.2.2单摆做简谐运动的条件 (4)三、基于MAT LAB的问题求解 (5)3.1单摆大摆角的周期精确解 (5)3.2、单摆仿真(动画) (7)3.3单摆仿真整个界面如下: (10)四、结论 (12)五、课程体会 (12)参考文献 (13)一、问题的提出在工科物理教学中,物理实验极其重要,它担负着训练学生基本实验技能、验证学生所学知识、提高学生综合实力的重要职责。
通过一系列的物理实验,学生可在一定程度上了解并掌握前人对一些典型物理量的经典测量方法和实验技术,并为以后的实验工作提供有价值的借鉴,进而培养学生的动手实践能力和综合创新能力。
然而,物理实验的优劣很大程度受限于物理实验条件的制约。
当前,受限于以下条件(很多情况下物理实验环境都是难以有效构造的),物理实验的效果并不理想:1)一些实验设备比较复杂并且昂贵,难以普及应用;2)有效实验环要求非常苛刻,是现实环境中难以模拟,甚至根本无法模拟;3)除此以外,有些实验的实验环境即使可以有效构造,它的实验结果却仍然是难以直接、完整观察获取的,如力场、电场、磁场中的分布问题等。
鉴于以上原因,物理仿真实验已引起了大家的关注,出现了一些软件。
但很多是基于Flash、Photoshop 、3D Studio MAX之类的图形图像软件制作。
这些软件可以制作逼真的实验环境和生动的实验过程动画,还可以制作出实际实验所无法达到的效果。
但这类软件本身是制作卡通动画的,对物理实验规律和过程很少涉及,很难做到真正的交互使用,及精确的计算分析同时开发也很困难。
因此,基于这些软件的仿真在工科物理实验教学中应用很少。
本文利用MATLAB 计算软件及其仿真功能对单摆实验过程进行模拟、仿真及后期分析,对物理实验教学改革提供一种新思路。
具体地,本文将描述一种新颖的单摆实验方法, 其主要的意义在于给学生以综合性实验技能训练。
一个综合性实验, 它必须涉及多方面的知识和实验技能。
本文描述的单摆实验方法即具备这样的特征。
它的实验原理虽然简单, 但所涉及到的知识点极为丰富: 力学振动, 计算机编程等。
学生通过这样的实验不仅可以得到综合性的实验技能训练, 而且可以在如何将现代技术改造传统实验、理论联系实际等方面得到很多启示。
另外,本文引入计算机技术分析法, 对单摆实验进行了改造, 既实现了基础物理实验的现代化, 又为MATLAB课程实验提供了很好的应用落足点, 可以使学生得到多方面的实验技能训练。
二、方法概述2.1问题描述单摆问题是高中物理及大学普通物理实验教学中的一个基础问题。
单摆在摆角比较小时,其运动规律近似为准简谐振动。
但是当摆角比较大时, 即单摆在大摆角情况下运动时,这种近似已不再成立,其运动方程满足非线性微分方程。
因此,对摆角大小的限制成为该实验中必须满足的条件。
不同的实验条件下,最大摆角的取值不同,其中包括, ,,,甚至等。
这就为在实验过程中对摆角的统一取值造成困难,给实验带来较大的误差。
同时,学生对单摆在大摆角情况下运动时其运动周期及运动规律的理解也存在困难。
利用先进的计算机仿真技术模拟单摆运动、分析单摆运动规律为学生理解、掌握单摆运动规律具有积极的意义。
就单摆问题而言,小球在来回摆动的过程中不仅受到外界阻力等环境影响,而且其摆动过程中的角度也是很难确定的(单摆在小于等于五度时才能验证其周期),这就为实际物理实验的展开制造了巨大的困难。
本文将借助于MATLAB 这个强大的数学软件, 计算任意摆角下单摆运动周期的精确解,以消除摆角问题带来的误差;同时利用该软件, 仿真出大摆角时单摆的运动情况,为单摆测重力加速度实验中大摆角问题的讲解提供较好的手段。
通过本问题的模拟、仿真、分析为大学物理实验其它问题的求解提供借鉴。
2.2算法基础2.2.1单摆运动周期单摆是一种物理模型。
设质量为m、摆长为l的单摆在重力场中作无阻尼振动,由牛顿第二定律得,单摆的运动方程为:(1)当摆角较小时, sin与无限接近,方程( 1) 化简为:= (2)这是一个简单的谐振动方程,其解析解为:A cos(t + ) (3)其中固定角频率=;其周期为:(4)当摆角较大时, 这种近似不再成立。
公式( 1) 是一个非线性微分方程, 其解析解很难求出。
但是通过积分的方法,作变量代换,就可得到大摆角运动时单摆的周期的积分形式:(5)其中为单摆的最大摆角。
此公式适用于任意摆角下单摆运动周期的计算。
2.2.2单摆做简谐运动的条件在力学的实验中,我们讨论单摆只讨论它的小角度摆动,单摆在摆角很小(小于5º)的情况下,可以看作间谐振动。
①研究摆球沿圆弧的运动情况时,要以不考虑与摆球运动方向垂直的力,而只考虑沿摆球运动方向的力,如图1所示。
图1 单摆运动中力的分析②因为F′垂直于v,所以,我们可将重力G分解到速度v的方向及垂直于v的方向.且G1=Gsinθ=mg sinθG2=G cosθ=mg cosθ。
③说明:正是沿运动方向的合力G1=mg sinθ提供了摆球摆动的回复力。
④推导:x在摆角很小时,sinθ=lx回复力F=mg sinθ F=mg·l(x表示摆球偏离平衡位置的位移,l表示单摆的摆长)⑤在摆角θ很小时,回复力的方向与摆球偏离平衡位置的位移方向相反,大小成正比,单摆做简谐运动。
⑥简谐运动的图象是正弦(或余弦曲线),那么在摆角很小的情况下,既然单摆做的是简谐运动,它振动的图象也是正弦或余弦曲线。
设摆线与垂直线的夹角为θ,在正下方处时θ=0,逆时针方向为正,反之为负。
则摆的角速度为(角度对时间t的一次导数),角加速度为(角度θ对时间t 的二次导数)。
对摆进行力学分析,由牛顿第二运动定律,有:ml = - mgsinθ即:+ sinθ = 0令ω = (g/l)1/2 ,有:+ ω2sinθ = 0当θ很小时, sinθ ≈ θ(这就是考虑单摆运动时通常强调“微”摆的原因)这时,有:+ ω^2θ ≈ 0该方程的解为:θ = Asin(ωt+φ)这是个正弦函数,其周期为:T = 2π/ω = 2π SinQ=Q M=-mglQ三、基于MAT LAB的问题求解3.1单摆大摆角的周期精确解利用MATLAB计算软件, 对[0,]区间的 , 每隔计算一个积分值, 得到2 000 个不同摆角的的精确解。
然后以摆角为横轴,为纵轴, 利用绘图函数polt ( x , y ) 绘制出任意摆角下单摆周期的精确解的曲线。
程序如下:%单摆周期与摆角的关系a= 0;b= pi/ 2;n= 1000;s1= 1: n;h= ( b-a) / n;h1= pi/ ( 2* n) ;c= 0: h1: pi/ 2x= a;s= 0;for i1= 1: ( n+ 1)f0= 2/ sqrt ( 1-( sin( c( i1) / 2) ) ^2* ( sin( x ) ) ^2) / pi;for i2= 1: nx= x+ h;f1= 2/ sqrt ( 1-( sin( c( i1) / 2) ) ^2* ( sin( x ) ) ^2) / pi;s= s+ ( f0+ f1) * h/ 2;f0= f1;enddisp( 1/ s) ;s1( i1) = s;s= 0;endplot( c, s1) ;xlabel( ‘theta0/rad’ ) ;ylabel( ‘T/T0’ ) ;运行结果后,得图2。
如图2所示,随着摆角的增大,单摆的运动周期与比值越来越大,即单摆运动周期随着摆角增大变大。
当摆角单摆的运动周期会急剧增加。
1.18图2 单摆周期的精确解3.2、单摆仿真(动画)我们在实验室做实验时一般情况下过程相对比较麻烦,而且很多实验所需要的条件难以控制,为此有时我们可以利用动画来进行仿真模拟实验。
本文用MATLAB 软件来进行动画仿真,设计以MATLAB程序来模拟单摆的仿真(制作一动画实现单摆),并通过仿真来回摆动的时间来测出单摆的周期。
通过Matlab的仿真既能把实验中需要设置的条件编写入程序中,又能减小实验带来的误差。
降低实验难度。
程序如下:%制作动画%挂摆横梁plot([-0.2;0.2],[0;0],'color','y','linestyle','-','linewidth',10);%画初始位置的单摆g=9.86; %重力加速度,可以调节摆的速度l=1;theta0=pi/4;x0=l*sin(theta0);y0=(-1)*l*cos(theta0);axis([-0.75,0.75,-1.25,0]);axis('off'); %不显示坐标轴%创建摆锤head=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersi ze',40); %创建摆杆body=line([0;x0],[0;y0],'color','b','linestyle','-','erasemode','xor'); %摆的运动t=0;dt=0.01;while 1t=t+dt;theta=theta0*cos(sqrt(g/l)*t);x=l*sin(theta);y=(-1)*l*cos(theta);set(head,'xdata',x,'ydata',y);set(body,'xdata',[0;x],'ydata',[0;y]);drawnow;end模拟实验结果如图4、图5所示,分别对应了单摆运动位于左右位置的状况。
图4 大角度单摆运动模拟截图一(右侧位置)图5 大角度单摆运动模拟截图二(左侧位置)3.3单摆仿真整个界面如下:代码如下:function varargout = SQ(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @SQ_OpeningFcn, ...'gui_OutputFcn', @SQ_OutputFcn, ...'gui_LayoutFcn', [], ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});endfunction SQ_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;axis('off');guidata(hObject, handles);function varargout = SQ_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;function edit1_Callback(hObject, eventdata, handles)function edit1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit2_Callback(hObject, eventdata, handles)function edit2_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end四、结论综合实验结果,结论如下:第一,如图2 所示,随着单摆摆角的增大,单摆的周期也会增加,这样很简单地就明白了为什么用单摆测量加速度时要求单摆的摆角要小于。