Matlab实现振动弹簧的实时动画论文
Matlab实现振动弹簧的实时动画
M a t l a b实现振动弹簧的实时动画This manuscript was revised by the office on December 22, 2012M a t l a b实现振动弹簧的实时动画摘要:Matlab是当前应用最广泛的科学与工程计算软件之一,本次课设将Matlab引入到图形学动画设计.本次课设主要可分为两大步骤:一、应用Matlab对弹簧振子进行建模;二、应用Matlab实现弹簧振动的实时动画。
其中建模部分包括对天花板的建模、对连接直线的建模、对弹簧的建模、对振动小球的建模。
模拟弹簧振动的过程主要包括:①更新小球和弹簧的位置。
②更新水平线的位置和长度。
③实时地画出弹簧高度与时间的关系曲线。
关键字:Matlab,振动弹簧,建模,实时动画目录1绪论................................................................... . (1)1.1matlab基本功能介绍................................................................... . (1)1.2matlab的动画制作 (2)2振动弹簧的实时动画 (4)2.1程序功能分析................................................................... (4)2.2弹簧振子的matlab建模 (6)2.2.1天花板的建模................................................................... . (7)................................................................. (8)................................................................. (9)................................................................. .. (10)2.2.5利用set函数返回句柄值改变来当前坐标轴 (11)2.3弹簧振动的实时动画 (13) (13)2.3.2利用matlab实现弹簧的实时振动 (14)2.4调试结果................................................................... (19)3设计总结................................................................... . (23)参考文献................................................................... .. (24)致谢................................................................... (25)附录-弹簧阻尼振动程序................................................................... (26)2.1程序功能分析以下是利用matlab实现振动弹簧的事实动画的程序。
MATLAB系统仿真报告——有阻尼受迫振动系统
dx dt
Kx
F0
sin
wt
(2)
(2)式是一个线性非齐次方程。令B/M = 2n(n为阻尼系数)),K/M= wn2 ( wn
n 为固有振动频率),ξ = wn 为相对阻尼系数或阻尼比,则(2)式可写为:
dx 2 dt 2
2n
dx dt
wn2 x
h sin( wt )
(3)
根据阻尼对系统振动的影响,振动响应分为弱阻尼(ξ<1)、(强阻尼ξ>1)和 临界阻尼(ξ=1)三种情况。这里仅讨论弱阻尼的情况。在弱阻尼情况下的振动 为响应:x=Ae-ξwnt sin ( 1-ξ2wn t +φ ) +A1 sin (wt+θ) (4) 谐迫振动的主要特性有: (1)式(4)包括瞬态与稳态响应两部分,其中瞬态响应是一个有阻尼的谐振。振
0
0
50
100
15
20
25
184.
184.
184.
184.
184.
184.
18
185.
185.
185.
有图可以看出盐水浓度达到 0.2 kg / m 3 ,需要 184.82 分钟。
2、 脚本文件的方法: t=0:250; v1=6; v2=4; c1=0.5; c2=0.2; c=(2+3*t)./(2000+6*t); plot(t,c); xlabel('t'); ylabel('C'); title('浓度随时间的变化曲线'); grid on
入响应并画出波形。(1 用 simlink 的方法,2 用脚本文件的方法)
matlab 文献综述 振动
物理与电子工程系2011届毕业论文文献综述07物理学 xxxMATLAB 在振动中的应用1. 对课题的简单介绍科学技术是第一生产力,当今时代,科技迅猛发展,各个行业信息化进程不断加速,社会对人才的信息技术能力的要求越来越高,为此,高校在重视专业知识培养的同时也非常注重计算机应用能力的训练,及信息技术能力的培养。
于是,在物理学方面,可以引入计算机软件来辅助对它的学习,而美国Math works 公司推出的MA TLAB 是一种集数值计算、符号运算、图形处理等多种功能于一体的优秀的图形化语言,通过用MATLAB 模拟实验数据,使用MATLAB 进行科学计算,可以使结果迅捷而准确,且具有可视化的能力,有助于使用者化抽象思维为形象思维,从而更好地洞察物理含义,理解概念,发现规律,提高教学和研究效率,适合于在物理学中应用,增加MA TLAB 软件技术在振动中的应用,使学生了解如何用计算机求解振动中的问题。
2. 相关文献的论述在韩敬林,钟方林,李林的《MATLAB 在大学物理实验数据中的应用》[1]一文,作者处理数据时应用了最小二乘法,而不是列表法,作图法,逐差法。
与这三种方法相比,最小二乘法是一种比较精确的曲线模拟方法,它避免了作图纸上人工拟合曲线的主观随意性。
而MATLAB 克服了最小二乘法的计算量大的缺点,同时又便于掌握的优点,能画出较准确的模拟图像。
作者做了弦振动形成驻波的实验,知道驻波波长、张力、振动频率与弦密度的关系式:λ=为了证明上式,作者对上式取对数,得到:11log log log log 22T f λμ=-- 若固定频率f 及线密度μ,而改变张力T ,并测出各相应波长λ,作log log T λ-图,若得一直线,计算其斜率值,如为1/2,则证明了12T λ∞的关系成立。
同理,固定线密度μ 及张 力T ,改变振动频率f ,测出各相应波长λ,作log log f λ-图,如得一斜率为-1的直线就验证了1f λ-∞的关系。
用MATLAB模拟弹簧摆运动
用MATLAB模拟弹簧摆运动引言:物体在一定位置附近所作的往复运动称为机械振动。
这种振动现象在自然界是广泛存在的。
例如,摆的运动,一切发声体的运动,机器开动时各部分的微小颤动等都是机械振动。
在不同的振动现象中,最基本最简单的振动是简谐振动。
一切复杂的振动都可以分解为若干个简谐振动,弹簧振子和小角度单摆就是简单的简谐振动。
计算机模拟可以直观表现物理系统的运动状态,对于理解抽象的物理公式和研究系统的运动带来很多方便,所以在科研中有广泛的应用。
这里我们借助于MATLAB,在研究物理系统的运动的同时,也用动画模拟他们的运动。
由于这些运动模拟式采用真实的从求解运动方程得到的数据。
所以利用matlab的数据拟合可以画出精确的图形。
题目:设质量为m的摆锤挂在劲度系数为k,原长为l的轻弹簧上,弹簧的另一端悬挂于固定点O,系统静止自然下垂时弹簧长度为mgl lk=+,系统可在过O点的竖直平面内自由摆动,试研究摆锤的运动。
原理:系统自由度为2。
以O 为极点,竖直向下的O x 轴为极轴,建立极坐标系,如图所示,r 为质点m 到O 点距离,为O x 轴与弹簧间的夹角,则系统的拉格朗日函数为由拉格朗日方程可求出系统的运动微分方程为上式未作小摆角近似,因此可用以研究弹簧摆的大摆角运动,但是难以求出解析解。
由数值计算结果所画出弹簧摆的大摆角运动轨迹,可发现它的运动情况很复杂,不作数值计算是无法想象的。
令1y r =,2dr y dt =,3y θ=,4d y dt θ=,则成为源程序:function thbglobal L m k gtheta0=pi/10; %初始角度,可由读者设不同的值 m=1;k=80;g=9.8; L0=1;L=L0+m*g/k; %L0为弹簧原来长度,L 为弹簧静止时长度 [t,u1]=ode45(@thbfun,[0:0.005:15],[L0 0 theta0 0]); [y1,x1]=pol2cart(u1(:,3),u1(:,1)); y1 = -y1;%将极坐标换为直角坐标figureymax=max(abs(y1));axis([-1.2 1.2 -1.2*ymax 0.2]);%设置坐标范围axis offtitle('弹簧摆','fontsize',14)hold on;R =0.055 ; %设置弹簧半径yy = -L0 : 0.01 : 0;xx = R*sin(yy./L0*30*pi);%用正弦曲线表示弹簧[a,r] = cart2pol(xx,yy); %用坐标变换来画初始位置的弹簧a = a + theta0;[xx,yy] = pol2cart(a,r);%弹簧的数据line([-1 1],[0 0],'color','r','linewidth',2)%画横杆,球与弹簧ball = line(xx(1),yy(1),'color','r','marker','.','markersize',70,'erasemode' ,'xor');ball2 = line(xx(1),yy(1),'color',[0.5 0.51 0.6],'linestyle','-','linewidth',1.3,'erasemode','none');spring = line(xx,yy,'color','r','linewidth',2,'erasemode', 'xor'); pause(0.5)for i = 1 : length(t) %画出每一步的弹簧位置yy = -u1(i,1) : 0.01 : 0;xx = R*sin(yy./u1(i,1)*30*pi);[a,r] = cart2pol(xx,yy);a = a + u1(i,3);[xx,yy] = pol2cart(a,r);set(ball,'XData',x1(i),'YData',y1(i));set(ball2,'XData',x1(i),'YData',y1(i));set(spring,'XData',xx,'YData',yy);drawnow;endfunction F = thbfun(t,u)global L m k gF = [u(2);u(1)*u(4)^2 + g*cos(u(3)) - k/m*(u(1) - L + m*g/k);u(4);-2*u(2)*u(4)/u(1) - g*sin(u(3))/u(1)];程序说明:程序中解微分方程的过程比较简单,主要的技巧是在做模拟动画上。
物理学论文 弹簧摆运动的分析
摘要本文对弹簧摆在竖直平面内运动这一物理模型,分别对其径向运动和横向运动,利用matlab,通过数值计算的方法,求解振动微分方程,分析系统的振动曲线,讨论了初始位置和弹簧长度、振子质量、弹簧劲度系数对系统振动的影响。
弹簧摆的径向振动时,小球的初始摆角对振子的振幅以及周期均没有影响;小球的质量、弹簧长度、弹簧劲度系数对振幅以及周期均有影响。
弹簧摆的横向振动时,初始摆角对振子横向运动的周期没有影响,但是对振子横向运动的振幅有影响;弹簧劲度系数对振子横向运动的振幅和周期有影响;弹簧长度对振子横向运动的振幅以及周期均有影响;小球质量对振子横向运动的振幅以及周期均有影响。
关键字:弹簧摆;matlab;径向运动;横向运动;振幅;周期AbstractThis paper is aimed at the spring pendulum this motion model, in the vertical plane using MATLAB, by numerical calculation, the radial vibration and lateral vibration of two kinds of circumstances, the vibration curve of the system is analyzed, the relationship between the amplitude, period and the initial vibration system swing angle, spring length, ball mass, spring stiffness coefficient obtained.The radial vibration of a spring pendulum, there is no effect of the initial amplitude of swing angle of ball vibtrator and cycle; effect of ball mass, length of spring, spring stiffness coefficient of the amplitude and frequency of.The transverse vibration of a spring pendulum, did not affect the amplitude of ball mass and spring stiffness coefficient of vibration, but the cycle of vibration effect; no effects of periodic initial swing angle of the vibrator, but the amplitude of vibration is influenced by the length of the spring; the amplitude and period of the effect of vibration.Keyword:spring pendulum;MATLAB;radial motion;lateral motion amplitude; cycle;目录第一章前言 (1)第二章弹簧摆的径向运动 (2)2.1 弹簧摆的动力学方程 (2)2.2 数值分析与讨论 (3)2.2.1 分析初始摆角对弹簧摆径向运动的振幅、周期的影响 (3)2.2.2 分析弹簧劲度系数对弹簧摆径向运动的振幅、周期的影响 (4)2.2.3 分析弹簧长度对弹簧摆径向运动的振幅、周期的影响 (5)3.2.4 分析小球质量对弹簧摆径向运动的振幅、周期的影响 (6)2.3 小结 (7)第三章弹簧摆的横向运动 (8)3.1 数值分析与讨论 (9)3.1.1 分析初始摆角对振子横向运动的振幅、周期的影响 (9)3.1.2 分析弹簧劲度系数对振子横向运动的振幅、周期的影响 (11)3.1.3 分析弹簧长度对振子横向运动的振幅、周期的影响 (13)3.1.4 分析小球质量对振子横向运动的振幅、周期的影响 (15)3.2 小结 (17)第四章总结 (18)参考文献 (19)致谢 (20)第一章前言物体在一定位置附近所作的往复运动称为机械振动。
matlab弹簧水平的位移曲线
文章标题:深度解析matlab中弹簧水平位移曲线在工程学和物理学中,弹簧的水平位移曲线是一个常见而重要的主题。
通过使用matlab软件进行建模和分析,我们可以更好地理解弹簧在水平位移下的行为特性。
在本文中,我将深入讨论这一主题,并从多个角度探讨其深度和广度,以便你能更全面理解此概念。
1. 弹簧水平位移曲线的基本概念弹簧的水平位移曲线是指在受力作用下,弹簧沿水平方向发生位移的曲线。
这一曲线通常由弹簧的刚度和外力等因素所影响。
在matlab 中,我们可以通过建立数学模型和使用相关函数来模拟和分析弹簧的水平位移曲线。
2. 弹簧刚度和水平位移的关系弹簧的刚度是指单位位移下所受到的力的大小,通常用k来表示。
在matlab中,我们可以通过建立弹簧的刚度模型,并通过绘制水平位移曲线来直观地理解刚度和位移的关系。
通过改变不同的刚度数值,我们可以观察到曲线的变化,从而深入了解刚度与位移之间的物理联系。
3. 弹簧的阻尼效应对水平位移曲线的影响弹簧的阻尼效应是另一个重要因素,它会对水平位移曲线产生影响。
在matlab中,我们可以通过引入阻尼系数来建立阻尼模型,并分析其对水平位移曲线的影响。
通过比较有无阻尼时的曲线变化,我们可以更好地理解阻尼效应在弹簧水平位移中的作用。
4. 外力对弹簧水平位移曲线的影响外力是引起弹簧水平位移的重要因素之一。
在matlab中,我们可以通过添加外力的大小和形式来研究其对水平位移曲线的影响。
通过绘制不同外力条件下的曲线,并进行分析比较,我们可以更深入地理解外力对弹簧水平位移的影响规律。
总结与回顾:通过对matlab中弹簧水平位移曲线的深入探讨,我们可以更全面地理解弹簧在受力作用下的行为特性。
通过分析弹簧刚度、阻尼效应和外力对水平位移曲线的影响,我们可以更深入地理解这一主题。
在工程和物理应用中,这些理论和分析可以帮助我们更好地设计和优化弹簧系统,提高工程的效率和可靠性。
个人观点和理解:在我的个人理解中,弹簧的水平位移曲线是一个多因素影响的复杂系统,其深度和广度远远超出了表面的简单描述。
MATLAB动画演示效果
MATLAB动画演示效果一%曲柄滑块机构hf=figure('name','曲柄滑块机构');set(hf,'color','g');hold onaxis([-6,6,-4,4]);grid onaxis('off');xa0=-5;%活塞左顶点坐标xa1=-2.5;%活塞右顶点坐标xb0=-2.5;%连杆左顶点坐标xb1=2.2;%连杆右顶点坐标x3=3.5;%转轮坐标y3=0;%转轮坐标x4=xb1;%设置连杆头的初始位置横坐标y4=0;%设置连杆头的初始位置纵坐标x5=xa1;y5=0;x6=x3;%设置连轴初始横坐标y6=0;%设置连轴初始纵坐标a=0.7;b=0.7c=0.7a1=line([xa0;xa1],[0;0],'color','b','linestyle','-','linewidth',40); %设置活塞a3=line(x3,y3,'color',[0.5 0.6 0.3],'linestyle','.','markersize',300);%设置转轮a2=line([xb0;xb1],[0;0],'color','black','linewidth',10);%设置连杆a5=line(x5,y5,'color','black','linestyle','.','markersize',40);%设置连杆活塞连接头a4=line(x4,y4,'color','black','linestyle','.','markersize',50);%设置连杆连接头a6=line([xb1;x3],[0;0],'color','black','linestyle','-','linewidth',10);a7=line(x3,0,'color','black','linestyle','.','markersize',50);%设置运动中心a8=line([-5.1;-0.2],[0.7;0.7],'color','y','linestyle','-','linewidth',5);%设置汽缸壁a9=line([-5.1;-0.2],[-0.72;-0.72],'color','y','linestyle','-','linewidth',5);%设置汽缸壁a10=line([-5.1;-5.1],[-0.8;0.75],'color','y','linestyle','-','linewidth',5);%设置汽缸壁a11=fill([-5,-5,-5,-5],[0.61,0.61,-0.61,-0.61],[a,b,c]);%设置汽缸气体len1=4.8;%连杆长len2=2.5;%活塞长r=1.3;%运动半径dt=0.015*pi;t=0;while 1t=t+dt;if t>2*pit=0;endlena1=sqrt((len1)^2-(r*sin(t))^2);%连杆在运动过程中横轴上的有效长度rr1=r*cos(t);%半径在运动过程中横轴上的有效长度xaa1=x3-sqrt(len1^2-(sin(t)*r)^2)-(r*cos(t));%活塞在运动过程中的右顶点坐标位置xaa0=xaa1-2.5;%%活塞在运动过程中的左顶点坐标位置x55=x3-cos(t)*r;%连杆在运动过程中横坐标位置y55=y3-sin(t)*r;%连杆在运动过程中纵坐标位置set(a4,'xdata',x55,'ydata',y55);%设置连杆顶点运动set(a1,'xdata',[xaa1-2.5;xaa1],'ydata',[0;0]);%设置活塞运动set(a2,'xdata',[xaa1;x55],'ydata',[0;y55]);set(a5,'xdata',xaa1);%设置活塞与连杆连接头的运动set(a6,'xdata',[x55;x3],'ydata',[y55;0]);set(a11,'xdata',[-5,xaa0,xaa0,-5]);%设置气体的填充set(gcf,'doublebuffer','on');%消除震动drawnow;end文献出处:/blog/static/13485835420091124584320/MATLAB动画效果演示二MATLAB 2009-12-24 17:15:48 阅读135 评论0 字号:大中小订阅%理想弹簧阵子简谐运动%Clearrectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);axis([0,15,-1,10]);%画顶板hold onplot([13,13],[7,8.5],'r','linewidth',2);%画直线y=2:.2:7;M=length(y);x=12+mod(1:M,2)*2;x(1)=13;x(end-3:end)=13;D=plot(x,y);%弹簧C=0:.1:2*pi;r=0.35;t1=r*sin(C);F1=fill(13+r*cos(C),2+t1,'r');% 球set(gca,'ytick',[0:2:9]);set(gca,'yticklabels',num2str([-1:3]'));plot([0,15],[3.3,3.3],'black');H1=plot([0,13],[3.3,3.3],'y');% 句柄[黄线]Q=plot(0,3.8,'color','r');% 运动曲线;td=[];yd=[];T=0;text(2,9,'理想中的弹簧振子简谐振动','fontsize',16);set(gcf,'doublebuffer','on');while T<12;pause(0.2);Dy=(3/2-1/2*sin(pi*T))*1/2;Y=-(y-2)*Dy+7;Yf=Y(end)+t1;td=[td,T];yd=[yd,Y(end)];set(D,'ydata',Y);set(F1,'ydata',Yf,'facecolor',rand(1,3));set(H1,'xdata',[T,13],'ydata',[Y(end),Y(end)]);set(Q,'xdata',td,'ydata',yd) ;T=T+0.1;end文献出处:/blog/static/1348583542009112451548632/%台球完全碰撞模拟示例axis([-1.6,12.6,-1.6,10.7])%确定坐标轴参数范围hold on %保持当前图形及轴系的所有特性fill([-2,13,13,-2],[-2,-2,11,11],[0,1,0]);%填充底座背景fill([-1,12,12,-1],[-1,-1,10,10],[0,0.5,0]);%填充底座背景ball1=line(0,5,'color','r','marker','.','erasemode','xor','markersize',60);%设置小球颜色,大小,线条的擦拭方式ball2=line(8,9,'color','g','marker','.','erasemode','xor','markersize',60);%设置小球颜色,大小,线条的擦拭方式ball3=line(-1,-1,'color','g','marker','.','erasemode','xor','markersize',80);%设置左下角圆的颜色,大小,线条的擦拭方式ball4=line(12,-1,'color','g','marker','.','erasemode','xor','markersize',80);%设置右下角圆的颜色,大小,线条的擦拭方式ball3=line(-1,10,'color','g','marker','.','erasemode','xor','markersize',80);%设置左上角圆的颜色,大小,线条的擦拭方式ball4=line(12,10,'color','g','marker','.','erasemode','xor','markersize',80);%设置右上角圆的颜色,大小,线条的擦拭方式title('完全非弹碰在模拟台球比赛的应用', 'color','r','fontsize',15);%图形标题pause(1)%设定暂停时间的长度t=0;dt=0.005;%设制初始数值while t<7.2%设定横轴范围t=t+dt;%设制横轴计算公式y=1/2*t+5;%设制纵轴计算公式set(ball1,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end %结束while t<8.8%设定横轴范围t=t+dt;%设制横轴计算公式y=1/2*t+5;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end %结束while t<11.5%设定横轴范围t=t+dt;%设制横轴计算公式y=-1/2*t+14.3;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束while t>-0.5%设制横轴范围t=t-dt;%设制横轴计算公式y=1/2*t+2.90;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束while t<6%设制横轴范围t=t+dt;%设制横轴计算公式y=-1/2*t+2.40;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束while t<11.5%设制横轴范围t=t+dt;%设制横轴计算公式y=1/2*t-3.0;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束while t>-2%设制横轴范围t=t-dt;%设制横轴计算公式y=-t*7.65/12.9+9.57;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束text(2,5,'好!进球了啊!!!恭喜!','fontsize',16,'color','r'); %显示字幕的颜色和大小文献出处:/blog/static/134858354200911245185379/MATLAB动画效果演示四MATLAB 2009-12-24 17:22:18 阅读50 评论2 字号:大中小订阅%能量守恒验证示例fill([6,7,7,6],[5,5,0,0],[0,0.5,0]);%右边竖条的填充hold on; %保持当前图形及轴系的所有特性fill([2,6,6,2],[3,3,0,0],[0,0.5,0]);%左边竖条的填充hold on;% 保持当前图形及轴系的所有特性t1=0:pi/60:pi;plot(4-2*sin(t1-pi/2),5-2*cos(t1-pi/2));%绘制中间的凹弧图形grid;%添加网格线axis([0,9,0,9]);%定义坐标轴的比例%axis('off');%关闭所有轴标注,标记,背景fill([1,2,2,1],[5,5,0,0],[0,0.5,0]);%中间长方形的填充hold on;% 保持当前图形及轴系的所有特性title('31608118');%定义图题x0=6;y0=5;head1=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersize',30);head2=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersize',50); %设置小球颜色,大小,线条的擦拭方式t=0;%设置小球的初始值dt=0.001;%设置运动周期t1=0;%设置大球的初始值dt1=0.001;while 1%条件表达式t=t+dt;x1=9-1*t;y1=5;x3=6;y3=5;if t>0x2=6;y2=5;%设置小球的运动轨迹endif t>2.8t=t+dt;a=sin(t-3);x1=6.1;y1=5.1;x3=4-2*sin(1.5*a);y3=5-2*cos(1.5*a);%设置大球的运动轨迹endset(head1,'xdata',x1,'ydata',y1);%设置球的运动set(head2,'xdata',x3,'ydata',y3);drawnow;end文献出处:/blog/static/1348583542009112452218157/。
MATLAB在分析物体振动方面的应用
《MATLAB语言》课程论文MATLAB在分析物体振动方面的应用姓名:邢晓佳学号:12010245256专业:通信工程班级:2010级通信班指导老师:汤全武学院:物理电气信息学院完成日期:2011年12月10日MATLAB在分析物体振动方面的应用(邢晓佳 12010245256 2010级通信班)[摘要]运用MATLAB语言很容易的解决了物理中常见的物体振动方面的题目,通过用MATLAB 计算阻尼振动中的单摆,简谐运动,弹簧振子的问题,更加鲜明的显示出了MATLAB的强大功能,实验结果表明这一方法具有操作简单明了!运算速度快,计算误差可控制等优点。
形象直观的显示图形和结论,利于研究和学习。
[关键词MATLAB 计算振动李萨如图简谐运动一、问题的提出振动是物体的一种很普通的运动形式,所谓机械振动是物体在一定位置附近所作的周期性往返运动。
例如,在心脏的跳动、钟摆的摆动、活塞的往复运动、固体原子的振动等等。
物体振动这样一个看似简单但又包含着很多计算的运动中,在人为的计算是很难精确的实现,而通过MATLAB可以处理诸多科学中的许多问题,利用它来研究物理学中的机械振动,不仅特别还特别有效。
这种运动都是在某一数值附近作往复的周期性运动,而在我们所学过的知识中,我们仅仅能解决的只是一些非常理想的振动—无阻尼振动,在处理这些问题时,遇到的问题都是容易解决的,不需要很复杂的变换,以及涉及一些特殊角度问题,以及在绘制振动图形时也会存在着一定的复杂性和难度,这些问题在MATLAB中都可以很容易解决。
下面就来简单介绍一下MATLAB在物体振动方面的具体应用。
MATLAB语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。
,MATLAB语言是美国Math Works 公司开发的计算机软件,经过多年的发展与完善。
现已成为国际上最流行的科学与工程计算的软件工具。
它集数值分析、矩阵运算、信号处理和图像处理等功能于一体,提供了一个方便的、界面友好的用户环境,而且还具有可扩展性特征。
毕业设计(论文)基于matlab_simulink的机械振动仿真研究
目 录1引言——机械振动的仿真原理 (5)1.1 Matlab Simulink 功能简述 (5)1.2机械振动的物理模型 (5)1.2.1简谐振动的物理模型 (5)1.2.2阻尼振动的物理模型 (6)1.2.3受迫振动的物理模型 (6)1.3 Matlab Simulink 仿真原理简述 (8)2简谐振动方程的解及其模拟仿真 (9)2.1简谐振动方程的求解 (9)2.2简谐振动模型的仿真研究 (9)2.2.1基本模型的建立 (9)2.2.2 速度、加速度的监测 (11)2.2.3 动能、势能、机械能监测 (12)2.3简谐振动的图像分析 (13)3阻尼振动方程的求解和仿真模拟 (15)3.1弹簧振子做阻尼振动方程的求解 (15)3.2弹簧振子做阻尼振动的模拟仿真研究 (15)3.3阻尼振动的图像分析 (18)4受迫振动的方程的求解和仿真模拟 (20)4.1弹簧振子做受迫振动方程的求解 (20)4.2弹簧振子做受迫振动的仿真模拟研究 (21)4.2.1策动力频率0ωω<时弹簧振子的受迫振动仿真模拟 (21)4.2.2策动力频率0ωω>时弹簧振子受迫振动的仿真模拟 (24)4.2.3策动力频率0ωω=时弹簧振子的仿真模拟 (26)4.3受迫振动的图像分析 (27)5几点补充说明与仿真模拟中问题分析 (29)5.1物理振动模型建立的补充说明 (29)5.2方程求解中的补充说明 (29)5.3仿真模拟中的问题分析 (29)6结语 (31)参考文献 (32)附录 (33)致谢 (34)摘要机械振动主要有简谐振动,阻尼振动,受迫振动三种。
对三种振动建立模型,列出振动方程,再对三种振动给定初始条件,就可以利用Matlab Simulink功能对三种振动进行仿真模拟,得出振动的位移,速度,加速度,动能,势能,机械能随时间的变化关系图像。
另外,我们对振动方程求解,得出振子位移关于时间的函数,再分别对其求一阶、二阶导数,就可以得出速度、加速度函数,再经过简单运算就可以得到动能、势能、机械能函数。
基于MATLAB螺旋拉伸弹簧优化设计2800字
基于MATLAB螺旋拉伸弹簧优化设计2800字摘要:通过MATLAB优化工具箱可以对螺旋拉伸弹簧的相关尺寸得到优化。
结果证明,在满足变形要求和最大剪应力不超过允许值的情况下,使最终目标为弹簧丝体积达到最小。
毕业关键词:MATLAB 螺旋拉伸弹簧优化设计一、前言弹簧是一种通用机械零件,它可以在载荷作用下产生较大的弹性变形。
弹簧性能的好坏对一些机械如内燃机气缸的阀门弹簧及各种缓冲器用的弹簧等是否能正常工作有很大的影响,衡量弹簧优劣的重要指标有体积或质量、速度及刚度,而且每一个目标之间的约束都具有其复杂性,所以很难在同述性能目标和质量目标并求得总体意义上的最优解,早已经成为人们研究与探讨的问题。
文献[1]是根据弹簧的最大载荷、最大变形及结构要求等来决定弹簧直径、弹簧中径、工作圈数、弹簧的螺旋升角和长度等通过运用遗传算法对以弹簧丝体积最小为目标函数的圆柱螺旋拉伸弹簧进行优化设计。
文献[2-4]分别用不同的方法来求解螺旋弹簧的优化模型。
本文是以联合收割机割台仿形机构的拉伸平衡弹簧为例,在满足变形要求和最大剪应力不超过允许值的情况下,以弹簧丝体积最小为目标函数运用MATLAB进行优化设计。
二、螺旋拉伸弹簧数学模型的建立在设计螺旋拉伸弹簧时,通常是根据弹簧的最大载荷、最大变形以及结构要求等来决定弹簧丝直径、弹簧中径、工作圈数、弹簧的螺旋升角和长度等。
即要求弹簧刚度尽可能大,弹簧所用金属材料尽可能少[5]。
设计联合收割机割台仿形机构的拉伸平衡弹簧,弹簧最大的拉力为F=28760N,最大拉力时弹簧的变形f=221.3mm, =700MPa,对于碳钢G=83000N/mm2 。
(一)设计变量的确定除了拉力F已知以外,影响弹簧变形和应力的参数有弹簧平均直径D、弹簧钢丝直径d、弹簧的有效圈数i、弹簧的根数n,因此取设计变量为:(二)目标函数的确定在满足变形要求和最大剪应力不超过允许值情况下,使弹簧的重量(或用料体积最小),本文用弹簧丝的体积作为目标函数,即:引入设计变量x1,x2,x3,x4,整理后可得体积最小的目标函数为:(三)约束条件的确定考虑到变形要求和剪应力及设计变量等的界限,得约束条件如下:1.弹簧的剪应力公式为:(MPa)式中k―与旋绕比有关的系数,可按以下公式计算:因此2.弹簧丝的直径d不大于15mm,即:3.弹簧圈的平均直径D不大于100mm,即:4.弹簧的根数n必须大于或等于1,即:5.螺旋弹簧的变形公式为:式中G―材料的剪弹性系数,F―弹簧承受的载荷(N);所以-221.3=0三、MATLAB优化工具箱MATLAB是由美国Math Works公司开发的以矩阵运算为基础,集通用数学运算、图形交互、程序设计和系统建模为一体,功能强、使用简单、容易扩展的科技应用软件,分总包和若干工具箱,其中的优化工具箱含有一系列的优化算法函数,机械优化设计把数学规划理论与数值方法应用于设计中,用计算机从大量可行方案中找出最优化设计方案, 从而大大提高设计质量和设计效率。
利用Matlab进行弹簧振子运动
利用Matlab进行弹簧振子运动弹簧振子是一个基本的物理模型,用于研究简谐振动的规律。
在Matlab中,我们可以使用数值方法来模拟弹簧振子的运动。
以下是一个简单的例子,说明如何使用Matlab进行弹簧振子的运动模拟。
首先,我们需要定义一些基本参数。
在这个例子中,我们将使用以下参数:•质量m = 1•弹簧常数k = 1•初始位移x0 = 0.1•初始速度v0 = 0•阻尼系数c = 0.1然后,我们需要定义运动方程。
弹簧振子的运动方程通常为:mx''(t) + c x'(t) + k x(t) = 0其中,x(t)表示振子在时刻t的位置,x'(t)表示振子在时刻t的速度,x''(t)表示振子在时刻t的加速度。
我们可以使用Matlab的函数功能来定义这个方程,然后使用初始条件来求解它。
我们可以使用Matlab的ode45函数,它是一个常用的求解常微分方程的函数。
function dydt = spring_oscillator(t, y)m = 1; % massk = 1; % spring constantc = 0.1; % damping coefficient% extract first column of y as x and second column as v x = y(1);v = y(2);% calculate accelerationa = -k/m * x - c/m * v;% calculate velocity and position derivativesdydt = [v; a];end% initial conditionsx0 = 0.1; % initial displacementv0 = 0; % initial velocityy0 = [x0; v0];% time span and step sizetspan = [0, 10]; % time span from 0 to 10 secondsdt = 0.01; % time step size of 0.01 seconds% solve the differential equation with initial conditions and time span[t, y] = ode45(@spring_oscillator, tspan, y0, [], [], []);% plot the resultsfigure; % create a new figure windowplot(t, y(:,1)); % plot the displacement as a function of timexlabel('Time (s)'); % x-axis labelylabel('Displacement (m)'); % y-axis labeltitle('Spring Oscillator Simulation'); % figure title grid on; % show grid on the plot这个代码会绘制出弹簧振子的位移随时间变化的图像。
用MATLAB编写程序对机械振动信号进行分析2
燕山大学课程设计(论文)任务书院(系):电气工程学院基层教学单位:说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
年月日二、摘要1)MATLAB的简单介绍MATLAB是美国Mathworks公司开发的新一代科学计算软件:MATLAB是英文MATtrix LABoratory(矩阵实验室)的缩写;MATLAB是一个专门为科学计算而设计的可视化计算器。
利用这个计算器中的简单命令,能快速完成其他高级语言只有通过复杂此案出才能实现的数值计算和图形显示。
MATLAB是一种既可交互使用又能解释执行的计算机编程语言。
所谓交互使用,是指用户输入一条语句后立即就能得到该语句的计算结果,而无需像C语言那样首先编写源程序,然后对之进行编译,连接,才能最终形成可执行文件。
MATLAB语言可以用直观的数学表达式来描述问题,从而避开繁琐的底层编程,因此可大大提高工作效率。
MATLAB是解决工程技术问题的技术平台。
利用它能够轻松完成复杂的数值计算,数据分析,符号计算和数据可视化等任务。
MATLAB软件由主包和各类工具箱构成。
其中,主包基本是一个用C/C++等语言编写成的函数库。
该函数库提供矩阵(或数组)的各种算法以及建立在此基础上的各种应用函数和一些相关的用户有好操作界面。
而工具箱从深度和广度上大大扩展了MATLAB主包的功能和应用领域。
随着自身的不断完善和发展,MATLAB功能越来越强大,应用也越来越广泛。
2)信号测试技术与分析随着机械工业不断向自动化、高精度、智能化等方向的发展,在机械设备运行及生产过程中进行参量测试、分析与诊断等处理过程已成为必要环节,许多信号处理方法如时域统计分析、相关分析、相干分析、频谱分析等已经被广泛被应用与机械工程测试领域。
测试信号通常指的是被测对象的运动或状态信息。
测试信号可以用数学表达式描述,也可以用图形、图表等进行描述。
在工程测试中,有的信号可以用数学公式精确描述,而大量的测试信号却只能用数学公式来近似描述。
利用Matlab进行弹簧振子运动状态的仿真(打印版)
利用Matlab进行弹簧振子运动状态的仿真汪家培(安庆师范学院物理与电气工程学院安徽安庆246001)指导教师:张杰摘要:简谐振动是最基本的振动,弹簧振子是最典型的简谐振动。
本文从牛顿第二定律出发推导了弹簧振子的运动学方程,从而进一步给出由两相同轻质弹簧和一个质量为m的小球组成的非线性弹簧振子系统的运动学方程,利用Matlab建立了该系统的仿真模型,研究了在不同条件下系统的的运动图像、能量图和相图,详细分析了此非线性系统的特点。
关键词:弹簧振子,能量图,相图,运动图,计算机仿真1. 引言普通物理力学中[1-2]讲振动时,常以水平弹簧振子和单摆为例作为问题的切入点,它们只是非线性振动的近似(胡克定律有一定的适用范围)。
所谓非线性振动是指恢复力与位移不成线性比例或阻尼力与速度不成线性比例的系统的振动。
一般说,线性振动只适用于小运动范围,超过此范围,就变成非线性振动。
非线性系统的运动微分方程是非线性的,不能用叠加原理求解。
方程中不显含时间的非线性系统称为非线性自治系统;显含时间的称为非线性非自治系统。
保守非线性自治系统的自由振动仍是周期性的,但其周期依赖于振幅。
对于渐硬弹簧,振幅越大,周期越短;对于渐软弹簧,振幅越大,周期越长。
非保守非线性自治系统具有非线性阻尼,阻尼系数随运动而变化,因而有可能在某个中间振幅下等效阻尼为零,从而能把外界非振动性能量转变为振动激励而建立起稳定的自激振动(简称自振)。
弦乐器和钟表是常见的自振系统。
周期地改变系统的某个参量而激起系统的大幅振动称参变激发非线性问题是当前物理研究中的热门问题,非线性光学、非线性声学等已成为专门的学科分支。
因此在普通物理力学教学中,适当的介绍一些非线性振动及处理方法,对学生后继课程的学习及今后的研究工作都是有益的。
本文用一个小球、两个弹簧设计了一个单自由度非线性振动装置,并用计算机数值计算出小球的运动图、能量图和相图,对非线性振动的特点进行了较为系统全面的分析。
matlab弹簧水平的位移曲线
matlab弹簧水平的位移曲线【主题】MATLAB弹簧水平的位移曲线【简介】在物理学和工程学中,弹簧是一种常见的弹性振动元件。
它在许多领域中被广泛应用,如机械工程、建筑结构分析、声学和振动工程等等。
弹簧的水平位移曲线是对其振动特性的描述,对于研究和分析弹簧的行为至关重要。
在本文中,我们将使用MATLAB来探讨弹簧的水平位移曲线,深入了解弹簧的振动特性和性能。
【正文】1. 简介弹簧的基本原理弹簧是一种弹性变形体,其基本原理是胡克定律。
根据胡克定律,弹簧的位移与施加在其上的力成正比。
弹簧的刚度常数k用来度量弹簧对施加在其上的力所产生的反作用。
当施加力增加时,弹簧的位移也增加,而刚度常数k则决定了弹簧的刚度和其位移量之间的关系。
2. 弹簧的水平位移曲线绘制利用MATLAB,我们可以轻松地绘制出弹簧的水平位移曲线。
我们需要确定弹簧的初始位置和刚度常数。
我们可以使用MATLAB的plot 函数来绘制位移曲线。
下面是一个简单的示例代码:```matlab% 确定弹簧的初始位置和刚度常数x0 = 0; % 初始位置k = 10; % 刚度常数% 定义施加在弹簧上的力F = 0:0.01:10; % 施加力的范围% 计算对应的位移x = (F/k) + x0; % 使用胡克定律计算位移% 绘制位移曲线plot(F, x);xlabel('施加力');ylabel('位移');title('弹簧水平的位移曲线');```通过运行以上代码,我们可以获得弹簧水平位移曲线的图形表达,并通过对施加力的变化进行观察,进一步理解弹簧的振动特性和性能。
3. 弹簧的振动频率和周期弹簧的振动频率和周期是研究弹簧振动特性的重要参数。
振动频率表示单位时间内振动的次数,周期表示完成一次完整振动所需要的时间。
我们可以使用MATLAB来计算和分析弹簧的振动频率和周期。
```matlab% 计算弹簧的振动频率和周期m = 1; % 弹簧的质量omega = sqrt(k/m); % 振动频率T = 2*pi/omega; % 周期```通过以上代码,我们可以使用弹簧的刚度和质量来计算振动频率和周期。
基于MATLAB GUI的耦合弹簧振子仿真实验设计
第33卷第5期2020年10月Vol.33No.5Oct.2020大学物理实验PHYSICAL EXPERIMENT OF COLLEGE文章编号:1007-2934(2020)05-0103-06基于MATLAB GUI的耦合弹簧振子仿真实验设计赵炳炎,陈宗华,张文杰(玉林师范学院物理与电信工程学院,广西玉林537000)摘要:通过建立耦合弹簧振子的动力学方程,并利用有限差分法在MATLAB软件中编程求解,模拟出耦合弹簧振子的运动过程,利用GUI交互界面设计耦合弹簧振子仿真实验。
仿真实验可用来展示和探究大学物理中的简谐振动、振动的合成、阻尼振动、受迫振动和共振等多个内容。
关键词:MATLAB GUI;耦合弹簧振子;仿真实验中图分类号:O313.1文献标志码:A D0l:10.14139/22-1228.2020.05.024大学物理课程中,振动章节的内容主要有简谐振动、振动的合成、阻尼振动和受迫振动几个部分。
而目前为该章节开设的大学物理实验只有单摆和复摆,侧重的是利用简谐振动的周期公式来推导一些物理量[1,2]。
近年来,许多教师通过计算机软件和编程设计了一些虚拟仿真实验,不但提升了课堂理论学习的趣味性,也提升了学生对基本理论的理解,是传统实验教学的有效补充[3-7]。
今年由于疫情影响,本校的大学物理实验课程不能正常开展,为了部分弥补实验课的缺失,本校大学物理教研室针对振动这一章内容设计了耦合弹簧振子仿真实验。
该仿真实验不但可以方便教师在网络课堂教学中为学生演示各种实验过程和结果,而且该实验可以涵盖振动章节中简谐振动、振动的合成、阻尼振动、受迫振动以及共振等多个内容,教学效果好且效率高。
1耦合弹簧振子仿真实验的物理模型仿真实验的物理模型由两个质量分别为®和m2的质点和三根弹力系数分别为k1,k2,k3的轻质弹簧耦合构成,设定两端固定,如图1所示。
模型中的两个质点都受到弹簧弹力化和阻尼F b 作用,而受迫振动只考虑其中一个质点m1受周期性外力F d影响的情况。
弹簧摆matlab演示及源代码
弹簧摆写出弹簧摆的运动微分方程,并用matlab 编写程序,演示弹簧摆的运动弹簧摆的运动微分方程可以通过拉格朗日函数法求得,对于弹簧单摆系统,在极坐标系中其拉格朗日函数为222211 ()cos ()22L T Vmg m r r mgr k r l kθθ=-=++--+ 其中,r θ为自由度,,,,m k g l 分别为摆球质量,弹簧刚度,重力加速度和摆初始长。
将拉格朗日函数带入到拉格朗日方程00d L L dL L dt θθ∂∂⎧-=⎪⎪∂∂⎨∂∂⎪-=⎪∂∂⎩得到系统的运动微分方程:sin ()02sin 0k mg r r g r l g k r rg θθθθθ⎧--+-+=⎪⎨⎪++=⎩ 对于这个非线性方程组,利用matlab 里面自带的ode45常微分方程组求解函数,对上面的方程组进行数值求解,得到了摆球的运动轨迹,如下图所示0246810121416弹簧摆内共振动画模拟及自由度随时间的变化曲线时间t 单位秒对应的自由度图中给出了弹簧摆运动过程中自由度,r 随时间的变化关系,下面将给出这个程序的源代码,演示程序时,首先停顿三秒,然后开始摆动,图形上方的弹簧摆的示意图开始摆动并描绘出轨迹,同时图形下方自由度随时间变化关系也会动态的给出,从这个过程中可以明显看出弹簧摆的内共振现象。
程序源码:function springmasstheta0=1.5*pi/10;%单摆的初始角度m=20/9.8;k=80;g=9.8;%弹簧质量的参数保证弹簧固有频率是单摆固有频率的2倍L0=1;L=L0+m*g/k;%L0为弹簧原来长度,L为弹簧静止时长度[t,u1]=ode45(@weifen,[0:0.05:15],[L00theta00],[],L,k,m,g);[y1,x1]=pol2cart(u1(:,3),u1(:,1));y1=-y1;%将极坐标换为直角坐标axis([016-1.54]);%text(0,u1(1,1),'摆长l');%text(0,u1(1,3),'摆角\theta');%axis offtitle('弹簧摆内共振动画模拟及自由度随时间的变化曲线','fontsize',15)xlabel('时间t单位秒');ylabel('对应的自由度');hold on;R=0.055;%设置弹簧半径yy=-L0:0.01:0;xx=R*sin(yy./L0*30*pi);%用正弦曲线表示弹簧[a,r]=cart2pol(xx,yy);%用坐标变换来画初始位置的弹簧a=a+theta0;[xx,yy]=pol2cart(a,r);%弹簧的数据xx=2*xx+7;yy=yy+3.5;%xx(1)=x(1)+15;line([68],[3.53.5],'color','k','linewidth',4)%弹簧单摆系统初始状态for i=1:9line([6+0.2*i6+0.2*i+0.2],[3.53.7],'color','k','linewidth',1);endline([77],[3.52.3],'color','k','linestyle','-.','linewidth',1)bigball=line(xx(1),yy(1),'color','b','marker','.',...'markersize',30,'erasemode','xor');%球ball2=line(xx(1),yy(1),'color','g','linestyle','-',...'linewidth',1.3,'erasemode','none');%轨线spring=line(xx,yy,'color','k','linewidth',2,'erasemode','xor');%弹簧linex=line(t(1),u1(1,1),'color','r','marker','.',...'markersize',10,'erasemode','none');%摆长曲线初始liney=line(t(1),u1(1,3),'color','b','marker','.',...'markersize',10,'erasemode','none');%摆角曲线初始%以下为标注text(6,-0.75,'\uparrow');text(4,-1,'摆角随时间变化曲线');text(9.0,1.9,'摆长随时间变化曲线');text(11.4,1.70,'\downarrow');%在初始状态下停顿三秒pause(2)%以下程序开始实现动画,在弹簧摆开始振动时画出相应的变化曲线for i=2:length(t)yy=-u1(i,1):0.01:0;%弹簧xx=R*sin(yy./u1(i,1)*30*pi);%xx(i)=x(i)+15;[a,r]=cart2pol(xx,yy);a=a+u1(i,3);%set(linex,'XData',t(i),'YData',u1(i,1));%%摆长初始%set(ball2,'XData',2*x1(i)+7,'YData',y1(i)+3.5);%轨线%set(liney,'XData',t(i),'YData',u1(i,3));%摆角初始plot([t(i-1),t(i)],[u1((i-1),1),u1(i,1)],'xr');plot([t(i-1),t(i)],[u1((i-1),3),u1(i,3)],'*b');%legend('摆长曲线','摆角曲线')[xx,yy]=pol2cart(a,r);xx=2*xx+7;yy=yy+3.5;set(bigball,'XData',2*x1(i)+7,'YData',y1(i)+3.5);%球%plot(2*x1(i)+7,y1(i)+3.5,'b');%球%set(ball2,'XData',2*x1(i)+7,'YData',y1(i)+3.5);%轨线plot([2*x1(i-1)+7,2*x1(i)+7],[y1(i-1)+3.5,y1(i)+3.5],'-g');%轨线set(spring,'XData',xx,'YData',yy);%弹簧drawnow;end%以下为弹簧摆的运动微分方程function value=weifen(t,u,l,k,m,g)value=[u(2);u(1.)*u(4).^2+g*cos(u(3))-k/m*(u(1)-l+m*g/k);u(4);-2.*u(2).*u(4)./u(1)-g*sin(u(3))./u(1)];。
振动力学ode45matlab程序实例
F
解题思路:
设受力大小为:
F=F0 sin ωt 建立平衡位置并受力分析,可得动力学方程如下:
或可写为: 其中:
mẍ+cẋ+kx=F0 sin ωt
ẍ +2ζω0ẋ +ω02x=
F0 m
sin
ωt
可知:
ω0=√mk
;
ζ= c = c
2√km cc
;
x=Xsin(ωt-ϕ)
X=
F0
; λ= ω
√(k-mω2)2+c2ω2
ωn
方程特解为: 方程通解为:
X2=
F0sin(ωt-ϕ) √(k-mω2)2+c2ω2
ห้องสมุดไป่ตู้
x=Aiζω0tsin(ωt+φ)+ F0sin(ωt-ϕ) √(k-mω2)2+c2ω2
即为:
xk F0
=
√[⊢
(mω )2 ]2
1 +
[2+ζ
(ωωn)2]
=
1 √(1-λ2)2+(2ζλ)2
=|G|
定义函数如下:
function y=vibration(t,x) F=0; c=5; k=32; m=2; y=zeros(2,1); y(1)=x(2); y(2)=F/m-c/m*x(2)-(k/m)^2*x(1); end
ode45 处理如下:
Matlab技术在机械振动分析中的应用案例
Matlab技术在机械振动分析中的应用案例引言:机械振动作为机械工程领域中非常重要的研究方向,对于机械设备性能的评估和故障诊断具有关键作用。
随着计算机技术的飞速发展,Matlab作为一种功能强大的数学计算软件,被广泛应用于机械振动领域。
本文将通过介绍一些典型的应用案例,展示Matlab在机械振动分析中的优越性和实用性。
一、弹簧振动分析弹簧振动是机械系统中常见的一种振动形式。
通过Matlab可以方便地建立弹簧振动的数学模型,进行分析和仿真。
以弹簧单自由度系统为例,我们可以通过编写Matlab程序来求解该系统的振动特性,比如自然频率、阻尼比等参数。
此外,Matlab还提供了丰富的绘图功能,可以用来绘制系统的振动曲线和频谱图,进一步分析和评估系统的性能。
二、子午线摆振动分析子午线摆是一种简单而重要的振动系统,在物理实验教学中被广泛应用。
利用Matlab可以实现子午线摆的运动仿真和数据分析。
通过建立子午线摆的运动微分方程,我们可以利用Matlab的数值求解功能来模拟摆的运动过程,并绘制出摆角随时间的变化曲线。
此外,Matlab还可以计算出摆的周期和频率,提供了便捷的数据处理方法,方便进行实验数据的比对和验证。
三、转子系统振动分析转子系统的振动分析是机械工程中一项关键任务。
Matlab提供了大量的信号处理和频谱分析工具,可以用来对转子系统的动态性能进行评估和诊断。
首先,我们可以通过Matlab对转子系统的模态进行分析,求解出转子的模态频率和振型。
接着,利用Matlab的FFT函数进行频谱分析,可以得到转子系统的频谱图,并进一步分析出存在的谐波成分。
通过与参考频谱进行比较,我们可以判断转子系统是否存在异常振动,进而评估其工作状态。
四、车辆悬架系统振动分析车辆悬架系统的振动特性直接影响着驾驶员的驾驶感受和乘坐舒适度。
Matlab在车辆悬架系统的振动分析中发挥着重要作用。
通过建立车辆悬架系统的动力学模型,并利用Matlab进行模拟和仿真,我们可以得到车辆在不同路况下的振动响应。
基于MATLAB的多自由度系统的振动特性分析
基于MATLAB的多自由度系统的振动特性分析多自由度系统是指由多个质点构成的机械系统,每个质点在三维空间内可以有自由度运动。
这些系统在工程领域中广泛应用于建筑物、桥梁、航天器等结构的振动分析与设计。
MATLAB作为一种强大的数学计算软件,可以用来进行多自由度系统的振动特性分析。
多自由度系统的振动特性可通过建立系统的动力学方程,并进行求解来确定。
首先,需要确定系统的质量矩阵、刚度矩阵和阻尼矩阵。
质量矩阵描述了系统中各个质点的质量分布情况,刚度矩阵描述了系统中各个质点之间的刚度关系,阻尼矩阵描述了系统中各个质点之间的阻尼关系。
这些矩阵的形式可以通过几何关系和材料性质确定。
然后,可以通过将质量矩阵、刚度矩阵和阻尼矩阵组合成一个动力学方程来描述多自由度系统的振动行为。
动力学方程通常采用矩阵形式表示,形式为MX''+KX+CX'=F,其中M是质量矩阵,K是刚度矩阵,C是阻尼矩阵,X是位移向量,F是外力向量,X''是位移向量的二阶导数,X'是位移向量的一阶导数。
利用MATLAB可以求解动力学方程。
可以使用ode45函数或者ode15s函数来求解微分方程组。
这些函数可以将微分方程组转化为一连串的时间步长上的代数方程组,然后使用数值方法进行求解。
其中,ode45函数适用于非刚性振动系统求解,ode15s函数适用于刚性振动系统求解。
在求解动力学方程之后,可以得到系统的模态参数和振型。
模态参数是指系统的固有频率和模态阻尼比,它们可以反映系统的振动特性。
振型是指系统在不同频率下的位移分布情况,它们可以帮助分析系统的工作状态和结构设计。
MATLAB可以通过eig函数来求解系统的模态参数和振型。
除了求解动力学方程外,MATLAB还提供了一些其他的分析方法用于多自由度系统的振动特性分析。
比如,通过画出系统的频率响应曲线、幅频特性曲线和相频特性曲线,可以直观地了解系统的频率响应、幅度响应和相位响应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab实现振动弹簧的实时动画摘要:Matlab是当前应用最广泛的科学与工程计算软件之一,本次课设将Matlab引入到图形学动画设计.本次课设主要可分为两大步骤:一、应用Matlab 对弹簧振子进行建模;二、应用Matlab实现弹簧振动的实时动画。
其中建模部分包括对天花板的建模、对连接直线的建模、对弹簧的建模、对振动小球的建模。
模拟弹簧振动的过程主要包括:①更新小球和弹簧的位置。
②更新水平线的位置和长度。
③实时地画出弹簧高度与时间的关系曲线。
关键字:Matlab,振动弹簧,建模,实时动画指导老师签字:目录1 绪论 (1)1.1 matlab基本功能介绍 (1)1.2 matlab的动画制作 (2)2 振动弹簧的实时动画 (4)2.1 程序功能分析 (4)2.2 弹簧振子的matlab建模 (6)2.2.1 天花板的建模 (7)2.2.2直线的建模 (8)2.2.3弹簧的建模 (9)2.2.4球的建模 (10)2.2.5 利用set函数返回句柄值改变来当前坐标轴 (11)2.3 弹簧振动的实时动画 (13)2.3.1弹簧振子简谐振动的物理模型 (13)2.3.2 利用matlab实现弹簧的实时振动 (14)2.4 调试结果 (19)3 设计总结 (23)参考文献 (24)致谢 (25)附录-弹簧阻尼振动程序 (26)Matlab实现振动弹簧的实时动画1 绪论1.1 matlab基本功能介绍MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
图 1-1 matlab开发界面MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。
1.2 matlab的动画制作常见的动画都是将离散的静态图形连续播放或快速变化并利用人眼的视觉暂留性来造成一种的感官上的连续化态效果。
市面上流行甚广的FLASH等动画制作软件,都是基于这一原理,将现成图形图像进行处理和变化来制作动画的。
Matlab是基于矩阵运算的工程科学计算软件,它不能简单的依靠图形图像的可视化编来制作动画,而是将矩阵、逻辑、函数等底层元素的变化通过图形外现来达到动画效果。
在Matlab中,每一个图形元素就是一个对象,每个对象都有一个相应的唯一的标识符(句柄) ,并且每个对象都有一组可以根据需要进行调整的属性,对象的属性反映了对象的特征,通过设置、修改这些属性,用户可以灵活地改变、调整图形对象显示的方式。
Matlab句柄图形的这一基本思想就是它实现动画功能的基本方法和重要原则。
在Matlab中常用set语句来修改句柄图形对象的属性。
基本语法为: set(H,‘PropertyName’, PropertyValue) , 其中H为图形句柄,PropertyName 为属性名称, PropertyValue为属性值,Matlab中允许在一个语句中对同一图形句柄的多个不同属性值进行设置。
在Matlab绘图中常用line函数来定义动画的基本变化元素,基本语法为: line ( x, y, z) ,其中x、y、z为坐标点数据。
函数line句柄常用的属性有: Color (颜色) 、XData ( x轴数据) 、YData ( y轴数据) 、ZData ( z轴数据) 、EraseMode (擦除模式) 、L ineStyle (线型) 、Marker (点型) 、MarkerSize (点尺寸) 、Visible (可视性)等等。
其中EraseMode是制作动画时非常关键的一个属性,其擦除属性的设置主要有四个可选值: (1)“normal”,缺省值,计算整个画面的数据,重画整个图形,这种模式产生的图形最准确, 但是速度最慢; ( 2 )“back2ground将旧对象的颜色变为背景颜色,实现擦除,这种模式将损坏被擦除对象下面的对象,但新对象会正确着色; (3)“none”,不做任何擦除; (4)“xor”,只画与屏幕颜色不一致的新对象点,只擦除与屏幕颜色不一致的原对象点,该方式不损坏被擦除对象下面的对象。
我们用line函数绘出运动点,在循环体内结合set函数巧妙地设置line句柄的擦除属性,就能制作出令人惊异的动画效果了。
在Matlab中实现动画还有一个很有用的函数: rotate,其功能是实现句柄图形的旋转,基本语法为: rotate (H, [ xyz] , alpha) ,其中[ xyz ]为旋转中心轴, alpha为旋转角度。
用rotate函数实现动画时常配合getframe函数使用,它可以在循环体中“拍”到句柄图形,然后在循环体外以movie函数将获得的图形回放,这种方式有点像将照相机抓拍的若干照片连动放映而成的动画。
在动画设计中,如何产生动画,方法比较多,常用的手法有:改变图形中的某一参数,以产生一组动画;对某一三维图形,不断改变其观察视角,获得一组画面;对三维图形进行旋转,也可以得到一组动画;在MATLAB 中,不断对图形色彩进行变幻,也可以产生不同的动画效果。
2 振动弹簧的实时动画2.1 程序功能分析以下是利用matlab实现振动弹簧的事实动画的程序。
rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);axis([0,15,-1,10]);%画顶板hold onplot([13,13],[7,8.5],'r','linewidth',2);%画直线y=2:.2:7;M=length(y);x=12+mod(1:M,2)*2;x(1)=13;x(end-3:end)=13;D=plot(x,y);%弹簧C=0:.1:2*pi;r=0.35;t1=r*sin(C);F1=fill(13+r*cos(C),2+t1,'r');% 球set(gca,'ytick',[0:2:9]);set(gca,'yticklabels',num2str([-1:3]'));plot([0,15],[3.3,3.3],'black');H1=plot([0,13],[3.3,3.3],'y');% 句柄[黄线]Q=plot(0,3.8,'color','r');% 运动曲线;td=[];yd=[];T=0;text(2,9,'理想中的弹簧振子简谐振动','fontsize',16);set(gcf,'doublebuffer','on');while T<12;pause(0.2);Dy=(3/2-1/2*sin(pi*T))*1/2;Y=-(y-2)*Dy+7;Yf=Y(end)+t1;td=[td,T];yd=[yd,Y(end)];set(D,'ydata',Y);set(F1,'ydata',Yf,'facecolor',rand(1,3));set(H1,'xdata',[T,13],'ydata',[Y(end),Y(end)]);set(Q,'xdata',td,'ydata',yd) ;T=T+0.1;end程序功能介绍:模拟弹簧振子简谐运动的过程,同时画出相应圆球质心随时间变化的曲线。
上面的程序为模拟弹簧振子的简谐振动,若要模拟弹簧阻尼振动过程的程序,可见附录。
2.2 弹簧振子的matlab 建模051015-1123图2-1 弹簧振子建模图上图所示的图形即为在matlab 环境下的弹簧振子的建模图形。
实现程序为:rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);axis([0,15,-1,10]);%画顶板hold onplot([13,13],[7,8.5],'r','linewidth',2);%画直线y=2:.2:7;M=length(y);x=12+mod(1:M,2)*2;x(1)=13;x(end-3:end)=13;D=plot(x,y);%弹簧C=0:.1:2*pi;r=0.35;t1=r*sin(C);F1=fill(13+r*cos(C),2+t1,'r');% 球set(gca,'ytick',[0:2:9]);set(gca,'yticklabels',num2str([-1:3]'));plot([0,15],[3.3,3.3],'black');下面分步介绍它的建模过程。
2.2.1 天花板的建模1212.212.412.612.81313.213.413.613.8148.58.558.68.658.78.758.88.85图2-2 天花板建模图如上图所示,为在matlab 环境下天花板的建模图形。
实现程序为:rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);程序功能介绍:rectangle 的功能就是画一个矩形,12,8.5为矩形的一个点,他的长和宽分别为2、0.3。