分享

再探抛体运动——考虑空气阻力影响

 当以读书通世事 2023-09-05 发布于甘肃
前面在利用编程解决生活中物理问题(五)中,我们已讨论过抛体运动规律,当时仅仅考虑重力,而忽略了空气阻力的影响。

然而在实际运动过程中,不可避免的会受到空气阻力的影响。其实,空气阻力的变化很复杂,速度不大时与速度成正比;速度较大时与速度的平方成正比;速度再大就与速度的立方甚至五次方成正比。

今天我们重点研究阻力与速度成正比的情形。

题目:

质量为  的物体,以初速度为  、方向与地面成  角抛出。如果空气阻力不能忽略,并设阻力与速度成正比,即  ,  为大于零的常数。求物体的运动轨迹。

解答:

根据受力情况,画出受力示意图,如下图所示。

图片

列出牛顿运动定律方程,即矢量关系为

设定沿  轴向右、  轴向上为正方向,其分量式为

          (1)

            (2)

将  代入式(1),得

改写为

对上式两边积分,即

求得

可见由于空气阻力的存在,  方向的速度不再是常数,而随时间逐渐衰减。

由于  ,那么


  时,  。对上式两边积分,有

求得

    (3)

同理,由于  ,式(2)转化为


当  时,  。对上式两边积分,有

求得

可见  方向的速度也不再是匀减速的。

由于  ,那么


当  时,  。对上式两边积分,有

求得

    (4)

联立(3)、(4)两式,消去  ,得到有阻力时的轨迹方程为

    (5)

以上就是我们今天需要求解的结果。

下面,我们继续对(5)式进行分析。根据高等数学中泰勒展开公式

我们对(5)式中  利用泰勒公式展开,有

我们取前面两项,得

    (6)

将(6)式代入(5)式中,可以得到

     (7)

大家有没有发现(7)式与我们前面利用编程解决生活中物理问题(五)中推导的在忽略空气阻力情况下的轨迹方程一样哈~~~

接下来我们通过Python编程,分别将小球在不受空气阻力影响与受空气阻力影响的运动过程展示出来,从而加深对抛体运动的理解。

详细代码如下:

from vpython import *
scene = canvas(width=1520, height=400,center=vector(20,0,0), background=color.white) #设定背景label(pos= vector(60, -8, 0), text = '寒江钓雪',height=20,color = color.black,box=False,opacity=0)
#绘制x轴x_axis = arrow(pos=vector(0,0,0), axis=vector(50,0,0), shaftwidth=0.1, headwidth=0.5,color=color.black)
#绘制y轴y_axis = arrow(pos=vector(0,0,0), axis=vector(0,20,0), shaftwidth=0.1, headwidth=0.3,headlength =1.4,color=color.black)
#标出原点O,x,yorigin_label = label(pos= vector(-1, -1, 0), text = 'O',height=25,color = color.black,linecolor=color.white,box=False,opacity=0)x_label = label(pos= vector(x_axis.pos.x+x_axis.axis.x, -1, 0), text = 'x',height=20,color = color.black,linecolor=color.white,box=False,opacity=0)y_label = label(pos= vector(-1, y_axis.pos.y+y_axis.axis.y,0), text = 'y',height=20,color = color.black,linecolor=color.white,box=False,opacity=0)
label(pos= vector(x_axis.pos.x+x_axis.axis.x, y_axis.axis.y-3, 0), text = '蓝色小球不受空气阻力影响',height=18,color = color.blue,linecolor=color.white,box=False,opacity=0)label(pos= vector(x_axis.pos.x+x_axis.axis.x, y_axis.axis.y-6, 0), text = '红色小球受空气阻力影响',height=18,color = color.red,linecolor=color.white,box=False,opacity=0)
#定义蓝色小球1,不受空气阻力影响ball1 = sphere(pos=vector(0,0,0),radius=0.4,color=color.blue,make_trail=1)#定义红色小球2,受空气阻力影响ball2 = sphere(pos=vector(0,0,0),radius=0.4,color=color.red,make_trail=1)
#设置重力加速度g=vector(0,-9.8,0)#设置小球的初速度与水平方向的夹角theta = 45#将角度转换为弧度theta_rad = radians(theta)
#设置小球的质量m=1#设置空气阻力系数k=0.2
#设置小球的初速度大小v = 20#定义小球的初始速度ball1.v = v*vector(cos(theta_rad),sin(theta_rad),0)ball2.v = v*vector(cos(theta_rad),sin(theta_rad),0)
#定义小球1的加速度ball1.a = g
#求出小球2的加速度ball2.a = g+(-k)*ball2.v/m
#定义小球1速度矢量箭头vector_v1 = arrow(pos = vector(0,0,0),axis =vector(0,0,0), color=color.blue,shaftwidth = 0.1,headwidth=0.6)v1_label = label(pos=vector_v1.pos+vector_v1.axis, text='v', height=20, color=color.blue, linecolor=color.white, box=False, opacity=0)
#定义小球2速度矢量箭头vector_v2 = arrow(pos = vector(0,0,0),axis =vector(0,0,0), color=color.red,shaftwidth = 0.1,headwidth=0.6)v2_label = label(pos=vector_v2.pos+vector_v2.axis, text='v', height=20, color=color.red, linecolor=color.white, box=False, opacity=0)
#绘制速度随时间变化关系vgraph=graph(title='小球速度随时间变化关系',width=400, height=280, xtitle='时间/s',ytitle='速度/m/s',align='left', xmin=0, xmax=3, ymin=10, ymax=22)
V1curve=gcurve(color=color.blue,graph=vgraph,label='蓝色小球速度') #绘制蓝色小球速度曲线V2curve=gcurve(color=color.red,graph=vgraph,label='红色小球速度') #绘制红色小球速度曲线
#绘制x轴位置随时间变化关系xgraph=graph(title='小球x轴坐标随时间变化关系',width=400, height=280, xtitle='时间/s',ytitle='x/(m)',align='left', xmin=0, xmax=3, ymin=0, ymax=50)
x1curve=gcurve(color=color.blue,graph=xgraph,label='蓝色小球x轴坐标') #绘制蓝色小球x轴坐标x2curve=gcurve(color=color.red,graph=xgraph,label='红色小球x轴坐标') #绘制红色小球x轴坐标
#绘制y轴位置随时间变化关系ygraph=graph(title='小球y轴坐标随时间变化关系',width=400, height=280, xtitle='时间/s',ytitle='y/(m)',align='left', xmin=0, xmax=3, ymin=0, ymax=12)
y1curve=gcurve(color=color.blue,graph=ygraph,label='蓝色小球y轴坐标') #绘制蓝色小球y轴坐标y2curve=gcurve(color=color.red,graph=ygraph,label='红色小球y轴坐标') #绘制红色小球y轴坐标
#设置时间间隔t=0dt=0.0001
while True: rate(2000) if ball1.pos.y>=0: ball1.v += ball1.a * dt #速度公式 ball1.pos += ball1.v * dt #位置变化 # 设置小球1的速度矢量 vector_v1.pos = ball1.pos vector_v1.axis = ball1.v * 0.3 v1_label.pos = vector_v1.pos + vector_v1.axis + vector(1, 1, 0) else: ball1.v = vector(0,0,0) #落到地面后速度置为0
if ball2.pos.y >= 0: ball2.v += ball2.a * dt #速度公式 ball2.pos += ball2.v * dt #位置变化 # 设置小球2的速度矢量 vector_v2.pos = ball2.pos vector_v2.axis = ball2.v * 0.3 v2_label.pos = vector_v2.pos + vector_v2.axis + vector(1, 1, 0) else: ball2.v = vector(0,0,0) #落到地面后速度置为0
if ball1.pos.y<0 and ball2.pos.y < 0: break
V1curve.plot(t, mag(ball1.v)) # 绘制小球1速度曲线 x1curve.plot(t, ball1.pos.x) # 绘制小球1x轴坐标 y1curve.plot(t, ball1.pos.y) # 绘制小球1y轴坐标
V2curve.plot(t, mag(ball2.v)) # 绘制小球2速度曲线 x2curve.plot(t, ball2.pos.x) # 绘制小球2x轴坐标 y2curve.plot(t, ball2.pos.y) # 绘制小球2y轴坐标
t += dt

程序运行结果为:

▲横屏观看效果更佳哦~~~

然,通过仿真我们可以清晰地看到空气阻力对小球运动的影响

由于空气阻力的影响,抛体的迹不再是简单的抛物线了,实际轨迹将比理想轨迹向左下方偏离也就是说,当存在空气阻力时,抛射的距离会变短。

图片

通过本期的讲解,大家一定对抛体运动有了更加深刻地理解。我们通过数学中的微积分推导,求得了在受空气阻力影响的情况下,抛体的轨迹方程。我们也发现学好数学的重要性,正所谓“物理的尽头是数学,数学的尽头是哲学”。

本期内容重点讨论的是空气阻力与速度成正比的情形,后期我们将进一步探讨空气阻力与速度平方成正比的情形。

欢迎大家关注本公众号,我们共同探究学习~

END

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多