Matlab课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自控系统仿真软件课程设计报告
MATLAB
设计题目:牛顿摆球
姓名:
学号:
院系:
班级:1203
指导教师:
2014年12月20日
一.课程设计目的
1、熟悉课程设计的基本流程;
2、掌握MATLAB语法结构及调试方法;
3、熟悉MATLAB函数调用,熟练二维画图;
4、掌握MATLAB语言在控制方面的运用;
5、学会用MATLAB进行基本仿真;
6、掌握MATLAB编程技巧,提高编程水平。
二.系统分析
1.题目的描述:
(1)牛顿摆球原理描述
五个质量相同的球体由吊绳固定,彼此紧密排列。当摆动最右侧的球并在回摆时碰撞紧密排列的另外四个球,最左边的球将被弹出,并仅有最左边的球被弹出。当然此过程也是可逆的,当摆动最左侧的球撞击其它球时,最右侧的球会被弹出。当最右侧的两个球同时摆动并撞击其他球时,最左侧的两个球会被弹出。同理相反方向同样可行,并适用于更多的球。
为了更接近现实,在这里我将考虑重力及空气阻力的影响,摆球将不会永无止境的运动下去,由于外界因素的影响,摆球运动一段时间后将回归静止状态。(2)通过MATLAB动画程序制作软件,实现下述过程
当运行程序时,把最右边的小球拉到一定的高度放下,让其碰撞其余四个小球,仅让最左边的小球被弹出,当最左边小球回摆碰撞其它球时,最右边小球又被弹出,如此循环。由于是非理想条件下,摆球的摆动幅度会随摆动次数的增加越来越小,直到静止。
时间停顿两秒,把右边两小球一起拉到一定高度放下,让其碰撞其余三个球,同样仅让左边两球被弹出,当球回摆再次碰撞时,最右边两球又被同时弹出,如此循环,因为外界因素的影响,最终五个球都会静止下来。
(3)整个实验看似简单,但要在MATLAB上完成这样一个动画过程,还是需要下点功夫,克服困难的。经过自己的努力,终于实现了整个过程,这也是一种不小的收获。
2.设计要求:
(1)能够实现有阻尼摆动,即摆幅随摆动次数增加越来越小,直到静止。(2)能够让摆球弧线摆动。
三.系统设计
1.系统设计过程
(1)通过函数axis建立坐标系
(2)在坐标系范围内通过函数line画各个支架
(3)通过函数title添加标题“动量守恒实验”、函数text添加标注“牛顿摆球”
(4)通过函数line画出五个球,并设定其初始位置,颜色,大小,线条的擦拭方式
(5)通过画线函数line画摆线,并设定摆线初始位置,颜色,大小,线条的擦拭方式
(6)通过条件循环函数while和for实现摆球循环碰撞
(7)通过数学函数实现摆球沿弧线运动
(8)通过函数set实现摆球、摆线的同步运动
(9)通过适当改变运动参数改变动画效果
2.系统总体框架流程图
3.MATLAB动画源程序清单
%适用电脑分辨率1280×800
axis([0,10,0,10]);
axis off;
title('动量守恒实验');
text(4.4,9.5,'牛顿摆球','fontsize',20,'color','r');
hold on;
x1=4;y1=3;x2=4.5;y2=3;x4=5.5;y4=3;x5=6;y5=3;
ball1=line(x1,y1,'color',[0.2 0.2
0.2],'linestyle','.','erasemode','xor', 'markersize',117);%设置左边第一
个球的初始位置,颜色,大小,线条的擦拭方式
ball2=line(x2,y2,'color',[0.2 0.2
0.2],'linestyle','.','erasemode','xor', 'markersize',117);%设置左边第二
个球的初始位置,颜色,大小,线条的擦拭方式
ball3=line(5,3,'color',[0.2 0.2 0.2],'linestyle','.','erasemode','xor', 'markersize',117);%设置左边第三个球的初始位置,颜色,大小,线条的擦拭方式
ball4=line(x4,y4,'color',[0.2 0.2
0.2],'linestyle','.','erasemode','xor', 'markersize',117);%设置左边第四
个球的初始位置,颜色,大小,线条的擦拭方式
ball5=line(x5,y5,'color',[0.2 0.2
0.2],'linestyle','.','erasemode','xor', 'markersize',117);%设置左边第五
个球的初始位置,颜色,大小,线条的擦拭方式
line([2.7;2.7],[7.95;1.5],'color',[1 1
1],'linestyle','-','LineWidth',8);%画左(里)支架
line([7.3;7.3],[8;1.5],'color',[1 1
1],'linestyle','-','LineWidth',8);%画右(外)支架
line([2.65;7.35],[8;8],'color',[1 1
1],'linestyle','-','LineWidth',8);%画上支架
line([2.4;2.4],[7.5;1],'color',[1 1
1],'linestyle','-','LineWidth',8);%画左(外)支架
line([7;7],[7.5;1],'color',[1 1 1],'linestyle','-','LineWidth',8);%画
右(里)支架
line([2.35;7.05],[7.55;7.55],'color',[1 1
1],'linestyle','-','LineWidth',8);%画上支架
line([2.1;3],[0.5;2],'color',[1 1 1],'linestyle','-','LineWidth',8);
line([6.7;7.6],[0.5;2],'color',[1 1 1],'linestyle','-','LineWidth',8);
R1=line([x5;6.2],[3;8],'color','k','linestyle','-','erasemode','xor') ;%设置右边第一根摆线初始位置,颜色,大小,线条的擦拭方式
R2=line([x5;x5],[3.5;7.55],'color','k','linestyle','-','erasemode','x
or');%设置右边第二根摆线初始位置,颜色,大小,线条的擦拭方式
R3=line([x4;5.7],[3;8],'color','k','linestyle','-','erasemode','xor') ;%设置右边第三根摆线初始位置,颜色,大小,线条的擦拭方式
R4=line([x4;x4],[3;7.55],'color','k','linestyle','-','erasemode','xor