MATLAB在抛体运动中的探讨
[摘要]计算机在大学物理中的应用已有二十多年的历史,MATLAB语言是一种集数值计算、符号运算、
可视化建模、仿真和图形处理等多种功能的高级语言。使用MATLAB模拟物理现象为我们解决问题提供了一种新的方法,利用其方便的数值计算和作图功能,可以方便的模拟一些物理过程。对于处理非线性问题,既能进行数值求解,又能绘制有关曲线,方便实用,基于其功能强大,界面友善,语言自然,交互性强等优点,已成为教学和科研中最基础的软件之一,利用其解决复杂的数值计算问题,可以减少工作量,节约时间,图形绘制问题,真实直观,可以加深理解,提高工作效率。
[关键词]MATLAB语言 抛体运动 空气阻力 力学 图形绘制
一、 问题的提出
MATLAB自推向市场以来,得到了广泛的应用和发展,在各高等院校中已经成为线性 代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等诸多课程的基本教学工具,成为大学生、硕士生、博士生必须掌握的基本技能,尤其在自动控制理论,是最具影响力、最有活力的软件。MATLAB提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其它程序和语言接口的功能。对于抛体运动问题,通常需要联立方程组,以及模拟它的路径,运动过程中不同的时间对应不同的位置,利用数学去计算很繁琐,手工绘图误差大,利用MATLAB可以很好地解决数值计算,模拟抛体运动的路径。
二、 抛体运动的介绍
抛体运动:将物体以一定的初速度向空中抛出,仅在重力作用下物体所作的运动,它的初速度不为零,可分为平抛运动和斜抛运动。物理上提出的“抛体运动”是一种理想化的模型,即把物体看成质点,抛出后只考虑重力作用,忽略空气阻力。抛体运动加速度恒为重力加速度,相等的时间内速度变化量相等,并且速度变化的方向始终是竖直向下的。 一般的处理方法是将其分解为水平方向和竖直方向,平抛运动水平方向是匀速直线运动,竖直方向是自由落体运动,斜抛运动水平方向是匀速直线运动,竖直方向是竖直上抛运动,在任意方向上分解有正交分解和非正交分解两种情加速度及位移等进行相应分析。无论怎样分解,都必须把运动的独立性和独立作用原理结合进行系统分解,即将初速度、受力情、加速度及位移等进行相应分析。
斜抛运动: 水平方向速度vx?v0cos? (1)
竖直方向速度vy?v0sin??gt水平方向位移 x?v0cos?t
(2)
(3)
12 gt2 (4)
竖直方向位移 y?v0cos?t?
平抛运动: 水平方向速度vx?v0竖直方向速度vy?gt水平方向位移x?v0t竖直方向位移vy?合速度vt?
(5)
(6)
(7)
12 gt2 (8)
2v2x?vy?v20?124 gt4 (9)
合速度方向与水平夹角?:tg??vyv?gtxv (10)
0
合位移s?x?y22 (11)
位移方向与水平夹角?:tg??sys?gtx2v0
(12)
三、抛体运动的分析
1、斜抛运动的理论分析
忽略空气阻力情况下的抛射体运动是普通物理学中的一个常见问题,在高中物理教材中已有涉及,解决该问题的方法较多,分析的角度也有不同,运用的数学方法也是从初等数学到高等数学而不断深入,对该问题的分析往往是通过运用各种力学原理,推导出该运动的射程,飞行高度,飞行时间以及飞行路径曲线形状等公式,但其数值求解过程比较复杂,因此,对不具备较好高等数学基础的同学来说是较困难的。
设某一抛射体的初速度为v0,抛射角为?,将其运动在X,Y轴上进行正交分解,水平方向速度vx?v0cos? (13) 竖直方向vy?v0sin??gt (14) 质点的坐标(x,y)是x(t)?v0cos(?)t (15)
1y(t)?v0sin?t?gt2 (16)
2从上两式消去t,便得质点的轨迹运动方程y?xtan??gx22v0cos?22t (17)
- 1 -
抛射体能达到的最大高度为H?2sinv0?22g (18)
其到达最大高度所需时间为T?v0sin?g (19)
sin?空中飞行时间为t?2T?2v0 (20)
g抛射体的最大射程为X?v02sin2?g (21)
2它跟初速度v0和抛射角?有关,在抛射角?不变的情况下,射程x与v0成正比,所以射程随初速度的增大而增大。在初速度v0不变的情况下,随着抛射角?的增大,射程也增大,当??45度时,sin2??1,射程达到最大值,以后随着抛射角的增大,射程减小。 利用MATLAB的绘图功能,可以更直观的体现上述结论。
x=linspace(0,pi/2,100); %产生行向量发射角 g=10; %重力加速度 v1=10; %初速度取10 v3=20; %初速度取20 v4=25; %初速度取25
y1=v1^2*sin(2*x)/g; %初速度为10下的射程 y2=v2^2*sin(2*x)/g; %初速度为15下的射程 y3=v3^2*sin(2*x)/g; %初速度为20下的射程 y4=v4^2*sin(2*x)/g; %初速度为25下的射程 subplot(2,2,1); %选择2*2个区的一号区 plot(x,y1); %输出初速度为10下的射程曲线 title('v0=10'); %加图形标题
text(pi/4,10,'射程为10'); %在最大射程处加图形说明 subplot(2,2,2); %选择2*2个区的二号区 plot(x,y2); %输出初速度为15下的射程曲线 title('v0=15'); %加图形标题
text(pi/4,22.5,'射程为22.5'); %在最大射程处加图形说明 subplot(2,2,3); %选择2*2个区的三号区 plot(x,y3); %输出初速度为20下的射程曲线 title('v0=20'); %加图形标题
text(pi/4,40,'射程为40'); %在最大射程处加图形说明 subplot(2,2,4); %选择2*2个区的四号区 plot(x,y4); %输出初速度为25下的射程曲线 title('v0=25'); %加图形标题
text(pi/4,62.5,'射程为62.5'); %在最大射程处加图形说明
程序运行结果如图1所示。
- 2 -