@zhongwei1234
2017-10-20T16:26:16.000000Z
字数 2582
阅读 54
一. 课题
Calculate the effect of the knuckleball force on a batted ball. Assume that the ball is a line drive hit at an initial speed of 90 mph and an angle of and that the ball does not spin at all. Let the rough side of the ball always face one side , which is perpendicular to the direction the ball is hit, and use Figuer 2.11 to estimate the magnitude of the lateral force. With all of these assumptions, calculate the lateral deflection of the ball.
Such ball hit with very little spin are observed by outfielders to effectively "flutter" from side to side as they move through the air.
1.计算出棒球击出后的轨迹,并算出横向偏移量
2.搞清棒球产生这种现象的原因
棒球的构造如下图

我们可以将缝球线看成占据球体四个相间隔的八分之一角的粗糙面,这四个粗糙面间的面是由皮革构成的光滑面(和粗糙面一样,每个面占四分之一)
依题目所示,我们击出的棒球八分之一粗糙面和相邻的八分之一光滑面顶着空气运动,球没有旋转。这样迎面的面一半受较大阻力(光滑面),一半受较小阻力(粗糙面) 这可以由下图看出,在90mph下两者阻力差别很大。这样一个水平力指向粗糙面,使球前进中向左或又偏转偏转。

如果球发生微小旋转(不快所以足以产生mangus力)则球受力忽左忽右,飘忽不定
面的角度旋转和所受横向力的关系如下图,由实验得到

这和我们开头给出的棒球粗糙光滑模型吻合(有8个极大极小,分别交替;这些极大极小对应于球的光滑粗糙面分界线正好迎着前进方向),90度一个周期
现在我们用 lateral/weight=0.5来计算一个不旋转的球的chukel效应,这时的横向力很大我们可以算出在棒球场这种球的最大偏移。
查资料显示 击出球高度大概在1.5m(棒球运动员挥舞棒子的高度度)即=1.5.
设想一个接球手扑到去接球,大概接住高度X=0.2m。完成一次全垒打。

用欧拉法去计算运动轨迹
V_xt
V_yt
V_zt
速度的也同理
=- t
=-gt- t
=+t
其中我们取=0.5
并设定之前约定的全垒打的初始末态条件,画出图求偏移量
"""Created on Fri Oct 20 18:45:54 2017@author: 钟伟"""import mathimport matplotlib.pyplot as pltx=0 #长度单位feet英尺y=1.5z=0v0=10 #初速度90mphθ0=(20/180)*math.piv_x0=v0*math.cos(θ0)v_y0=v0*math.sin(θ0)x_list=[0]y_list=[1.5]z_list=[0]Δt=0.01v_x=v_x0v_y=v_y0v_z=0.0v=math.sqrt(v_x**2+v_y**2+v_z**2)B=0.0039+0.0058/(1+math.exp((v-35)/5)) #B=B2/mg=9.8n=0while y>0.2:x=x+v_x*Δty=y+v_y*Δtz=z+v_z*Δtv_x=v_x-B*v*v_x*Δtv_y=v_y-g*Δt-B*v*v_y*Δtv_z=v_z+0.5*Δtx_list.append(x)y_list.append(y)z_list.append(z)n+=1plt.figure(figsize=(10,10))plt.title('y/z-x')plt.xlabel('x(m)')plt.ylabel('y(m)/z(m)')plt.plot(x_list,y_list,label="y-x",ls=':',color='black')plt.plot(x_list,z_list,label="z-x",ls='-',color='red')plt.legend(loc='upper right')plt.show()plt.figure(figsize=(6,6))plt.title('x-z')plt.xlabel('x(m)')plt.ylabel('z(m)')plt.plot(x_list,z_list,label="x-z")plt.legend(loc='upper right')plt.show()print(z)
由代码知,X为球水平运动方向,Y为垂直地面方向,Z为球的横向偏移量
1. y或z关于x的变化

分析:在竖直方向(也是运动员最关心的,好做出预判确定X),球飞起到2米多下落,初速度为90mph大概为10m/s(不算快球,抛球的抛的不行)最后在9米远处被接住(不算远,看看给接球手的时间是关键)
print(z)
print(n)代码有输出结果如下
0.23765000000000017
98
所以z的最终值0.24米,对运动员来说就是一小步
总时间T=980.01=0.98s,问题来了运动员的速度要达到接近v=90.98=9.18m/s.
所以重点来了,这个奔跑速度100米是10.89s,是国家健将运动员标准(还更高些,应为只跑了9米还带启动)
打全垒打不容易啊 如果球轻微旋转则飘忽不定的轨迹让接球的更加为难

可以推广到足球,不过足球缝线更多
不过C罗的电梯球就可以解释了
感谢观看!!!
钟伟 武汉大学 2015301020164