用matlab解决弹簧振子摆动与时间的关系学院:光电信息班级:应用物理(111160102)姓名:王梅学号:111160102242013年5月20日摘要:用matlab解决弹簧振子的振动和时间的关系,通过这个软件可以清晰的计算和绘画出它的关系图。这里我们借助于matlab,在研究物理系统的运动的同时,也用动画模拟他们的运动。由于这些运动模拟式采用真实的从求解运动方程得到的数据。所以利用matlab的数据拟合可以画出精确的图形。题目:设质量为m的摆锤挂在劲度系数为k,原厂为l0的轻弹簧上,弹簧的另一端悬挂于固定点o,系统静止自然下垂时弹簧长度为l=l0+m*g/k,系统可在过0点的竖直平面内自由摆动,试研究摆锤的运动。解:以o为极点,竖直向下的ox轴为极轴,建立坐标系。R为质点m到o点距离,a为ox轴与弹簧间的夹角。则系统的拉格朗日函数为L=T-V=(1/2)m[(dr/dt)^2+r^2*(da/dt)^2]-[-mgrcosa+1/2*k(r-l0)^2]Matlab程序:functionthbglobalLmkgtheta0=pi/10m=1;k=80;g=9.8;L0=1;L=L0+m*g/k;[t,u1]=ode45(@thbfun,[0:0.005:15],[L00theta00]);[y1,x1]=pol2cart(u1(:,3),u1(:,1));y1=-y1;figureymax=max(abs(y1))axis([-1.21.2-1.2*ymax0.2]);axisofftitle('µ¯»É°Ú¡®£¬'fontsize',14)holdon;'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',2ball1=line(xx(1),yy(1),'color','r','marker','.',...'markersize',70,'erasemode','xor');ball2=line(xx(1),yy(1),'color',[0.50.510.6],'linestyle','-',...'linewidth',1.3,'erasemode','none');spring=line(xx,yy,'color','g','linewidth',2,...'erasemode''xor');pause(0.5)fori=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,x1(i),'YData',y1(i));set(spring,'XData',xx,'YData',yy);drawnow;endfunctionF=thbfun(t,u)globalLmkgF=[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)];运行结果:functionF=thbfun(t,u)globalLmkgF=[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)];theta0=0.3142结果分析:通过本次综合实践让我们在学习计算物理基础课程的同时,掌握MATLAB的应用,对MATLAB语言在中的推广应用起到促进作用。从而将便多的时间留于对matlab的基本分析方法和应用的理解与思考学会应用MATLAB的数值计算功能,将学生从繁琐的数学运算中解脱出来,从而将便多的时间留于对matlab系统的基本分析方法和应用的理解与思考。让我们将课程中的重点、难点及部分课后练习用MATLAB进行形象、直观的可视化计算机模拟与仿真实现,从而加深对matlab系统基本原理、方法及应用的理解,以培养学生主动获取知识和独立解决问题的能力,为学习后继专业课打下坚实的基础。