[关闭]
@Xc-liu 2016-04-05T22:59:29.000000Z 字数 4874 阅读 2033

考虑科里奥利力以后抛体的运动情况

如下图所示,选取与抛体出射点固连的动系


我们真正关心的问题是,已知炮弹的出射点的经度和纬度,出射炮弹的方位角
如何计算炮弹落点的经度和纬度
科里奥利力示意图.001.jpeg-44.1kB

描述炮弹在动系中运动的微分方程:


在动系中角速度的表达式:

炮弹在动系中相对速度的表达式:

则科里奥利力的表达式为

另一方面空气阻力的表达式为:

惯性离心力和地球万有引力的合力可由重力代替:

综上可以给出炮弹在动系中的运动微分方程:




微分方程的数值计算处理:

计算实例:

注:经度全是东经,纬度全是南纬
随便选一点发射

(方位角)与X轴夹角 与Y轴夹角 与Z轴夹角 初速度 初始经度 初始纬度 初速度 m/s 落点经度 落点纬度
45 45 0 20 20 700 74.44 160

轨迹图:1_figure_1.png-81kB

选极点向上发射

(方位角)与X轴夹角 与Y轴夹角 与Z轴夹角 初速度 初始经度 初始纬度 初速度 m/s 落点经度 落点纬度
90 90 0 0 90 700 0.00 90.0

轨迹图:
2_figure_1.png-58.3kB

在武汉大学发射

(方位角)与X轴夹角 与Y轴夹角 与Z轴夹角 初速度 初始经度 初始纬度 初速度 m/s 落点经度 落点纬度
90 90 0 60 114 700 -24 133

轨迹图:
3_figure_1.png-77.3kB

以略大于第一宇宙速度的速度发射
轨迹图:
4_figure_1.png-83.5kB

计算程序(估计计算会有错误)

  1. #coding:utf-8
  2. #initial value
  3. import math
  4. t=[]
  5. dt=0.01 #B/m=4*10-5 realy count
  6. g=9.8
  7. end_time=100
  8. h_0=0.0001
  9. B=4*10**(-5)
  10. a=45/180.0*math.pi
  11. b=45/180.0*math.pi
  12. c=0/180.0*math.pi
  13. theta=[a,b,c] #direction angle
  14. d=20/180.0*math.pi
  15. e=math.pi/2-20/180.0*math.pi
  16. angle_0=[d,e] #initial longitude and latitude
  17. t.append(0)
  18. w=4.167*10**-3
  19. R=6371000
  20. #define variable
  21. x=[]
  22. v_x=[]
  23. y=[]
  24. v_y=[]
  25. z=[]
  26. v_z=[]
  27. x.append(0)
  28. y.append(0)
  29. z.append(0)
  30. v_x.append(700*math.cos(theta[0])) #initial speed equal 700m/s
  31. v_y.append(700*math.cos(theta[1]))
  32. v_z.append(700*math.cos(theta[2]))
  33. #caulate the coordinate
  34. for i in range(int(end_time/dt)):
  35. m=x[i]+v_x[i]*dt
  36. x.append(m)
  37. n=v_x[i]+2*w*v_y[i]*math.sin(angle_0[1])*dt-B*math.e**-(((x[i]**2+y[i]**2+(z[i]+R)**2)**0.5-R)*h_0)*((v_x[i]**2+v_y[i]**2+v_z[i]**2)**0.5)*v_x[i]*dt
  38. v_x.append(n)
  39. o=y[i]+v_y[i]*dt
  40. y.append(o)
  41. p=v_y[i]-2*(v_z[i]*math.cos(angle_0[1])+v_x[i]*math.sin(angle_0[1]))*dt-B*math.e**-(((x[i]**2+y[i]**2+(z[i]+R)**2)**0.5-R)*h_0)*((v_x[i]**2+v_y[i]**2+v_z[i]**2)**0.5)*v_y[i]*dt
  42. v_y.append(p)
  43. r=z[i]+v_z[i]*dt
  44. z.append(r)
  45. s=v_z[i]+2*w*v_y[i]*math.cos(angle_0[1])*dt-g*dt-B*math.e**-(((x[i]**2+y[i]**2+(z[i]+R)**2)**0.5-R)*h_0)*((v_x[i]**2+v_y[i]**2+v_z[i]**2)**0.5)*v_z[i]*dt
  46. v_z.append(s)
  47. H=(x[i]**2+y[i]**2+(z[i]+R)**2)**0.5-R
  48. if H<=0:
  49. if H>=-3:
  50. X=x[-1]
  51. Y=y[-1]
  52. Z=z[-1]
  53. print x[-1],y[-1],z[-1]
  54. #caulate the longitude and latitude
  55. Delta_g=math.pi/2-math.acos(Z/((X**2+Y**2)**0.5))
  56. g=Delta_g+angle_0[1]
  57. # k_1=X*math.cos(angle_0[1])-(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.cos(angle_0[1])**2+Z*math.sin(angle_0[1])+(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1])*math.sin(angle_0[1])**2
  58. # k_2=(X-(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1])*math.cos(angle_0[1])))**2+Y**2+(Z+(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.sin(angle_0[1]))**2
  59. # k=k_1
  60. k_1=X*math.cos(angle_0[1])-(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.cos(angle_0[1])**2+Z*math.sin(angle_0[1])+(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.sin(angle_0[1])**2
  61. k_2=(X-(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1])*math.cos(angle_0[1])))**2+Y**2+(Z+(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.sin(angle_0[1]))**2
  62. Delta_f=k_1/k_2**0.5
  63. f=Delta_f+angle_0[0]
  64. f_1=(f/math.pi)*180
  65. g_1=(g/math.pi)*180
  66. print f_1 ,"longitude"
  67. print g_1 ,"latitude"
  68. # print k,"X"
  69. #draw the picture
  70. import matplotlib as mpl
  71. from mpl_toolkits.mplot3d import Axes3D
  72. import numpy as np
  73. import matplotlib.pyplot as plt
  74. mpl.rcParams['legend.fontsize'] = 10
  75. fig = plt.figure()
  76. ax = fig.gca(projection='3d'
  77. ax.plot(x, y, z, label='parametric curve')
  78. ax.legend()
  79. plt.show()

参考文献

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注