- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
双单摆摆动的模拟
计算物理 课程设计说明书
题目: 双单摆摆动的模拟
学生姓名:
学 号:
院 (系): 理学院
专 业: 应用物理
指导教师:
2013年12月30日
目 录
一.正文 1
1.选题背景: 1
2.方案论证: 1
3.过程(设计或实验)论述: 2
(a).简述 2
(b).方程分析 2
(c).计算机模拟 3
4.结果分析: 3
5.结论或总结: 5
二.设计体会及今后的改进意见 5
参考文献资料
一.正文
1.选题背景:
双单摆在理论力学中是一个经典的模型,在对其研究中,通过运用拉格朗日力学和小振动系统的处理方法可以近似的求解出双单摆的解析解,但是却无法让我们直观的观察双单摆的运动情况,而借助计算机,运用龙格-库塔法可以模拟双单摆的运动情况,将解析解转换为数字解进而进行模拟。
2.方案论证:
依据拉格朗日力学进行双单摆的求解可以有效的了解两个相互联系的单摆的运动情况,根据matlab的数字模拟更加直观的展现了双单摆的运动情况,对动量守恒的研究有着很明显的帮助。在实际生活中双单摆的运动情况比较复杂,我们不能够直观的了解双单摆的运动情况,原因有许多,因为有许多干扰因素导致了理想的双单摆模型并不存在,而通过计算机模拟我们可以精确的去学习和论证双单摆。
3.过程(设计或实验)论述:
(a).简述
如上图所示,为双单摆的基本模型,通过观察发现两个小球之间是相互关联的,要想了解两个小球的运动情况,先要写出它们之间满足的方程,以横轴为X轴,竖轴为Y轴建立平面直角坐标系,取θ0和θ为两个广义坐标。
(b).方程分析
由拉格朗日力学可求
带入由拉格朗日方程中去
运用matlab中的ode45语句解常微分方程从而得出这个方程的数值解
(c).计算机模拟
运用计算机模拟进行双单摆的演示,画出双单摆在理想情况下的运动,观察并记录。
4.结果分析:
程序为:
function F
l=9;
[t,u]=ode45(@Ffun,[0:0.01:30],[0.5,0.2,0.1,2.8],[],1);
y1=-l*cos(u(:,1));
x1=l*sin(u(:,1));
y2=y1-l*cos(u(:,3));
x2=x1+l*sin(u(:,3));
figure
axis([-12 12 -20 5])
axis equal
hold on
a10=line([-9,9],[0,0],color,k,linewidth,4);
a20=linspace(-9,9,36);
for i=1:35
a30=(a20(i)+a20(i+1))/2;
plot([a20(i),a30],[0,0+0.5],color,b,linestyle,-,linewidth,1);
end
ball1a=line(x1(1),y1(1),color,[0.5 0.6 0.4],linestyle,-,linewidth,1,erasemode,xor);
ball1=line(x1(1),y1(1),color,r,marker,.,markersize,50,erasemode,xor);
ball2a=line(x2(1),y2(1),color,[0.5 0.6 0.4],linestyle,-,linewidth,1,erasemode,xor);
ball2=line(x2(1),y2(1),color,r,marker,.,markersize,50,erasemode,xor);
line1=line([0,x1(1)],[0,y1(1)],color,b,linewidth,2,erasemode,xor);
line2=line([x1(1),x2(1)],[y1(1),y2(1)],color,b,linewidth,2,erasemode,xor);
for i=1:length(u)
set(ball1,xdata,x1(i),ydata,y1(i));
set(ball2,xdata,x2(i),ydata,y2(i));
set(ball1a,xdata,x1(i),ydata,y1(i));
set(ball2a,xdata,x2(i),ydata,y2(i));
set(line1,xdata,[0,x1(i)],ydata,[0,y1(i)]);
set(line
文档评论(0)