[关闭]
@74849b 2016-10-23T06:03:09.000000Z 字数 2043 阅读 933

exercise6


摘要

在之前的情况中讨论定点发射。仍考虑空气阻力,使用绝热模型,这个运动的方程可表示如下:


考虑绝热模型后,在前乘一项即为此时的阻力。
对于定点射击,可考虑两种情况:
a.初速度固定,计算角度使之达到规定点
b.出射角度固定,初速度可变
下面以这两种情况进行设计

正文

对于情况a,代码如下:

  1. import matplotlib.pyplot as plt
  2. import math
  3. theta_proper=[]
  4. #t=0
  5. vx=[]
  6. vy=[]
  7. dt=0.1
  8. v=[]
  9. x=[]
  10. y=[]
  11. v_ini=700
  12. bm=4e-5
  13. T=200
  14. a=6.5e-3
  15. c=2.5
  16. g=9.8
  17. target1=20000
  18. target2_list=[-300,0,4000]
  19. for theta in range(0,90):
  20. v.append(v_ini)
  21. vx.append(v_ini*math.cos(theta*math.pi/180)),vy.append(v_ini*math.sin(theta*math.pi/180))
  22. x.append(0),y.append(0)
  23. while x[-1]<=22000:
  24. vx.append(vx[-1]-bm*dt*v[-1]*vx[-1]*(1-a*y[-1]/T)**c)
  25. vy.append(vy[-1]-g*dt-bm*dt*v[-1]*vy[-1]*(1-a*y[-1]/T)**c)
  26. x.append(x[-1]+vx[-1]*dt)
  27. y.append(y[-1]+vy[-1]*dt)
  28. v.append(math.sqrt(vx[-1]**2+vy[-1]**2))
  29. for i in range(3):
  30. if math.sqrt((x[-1]-target1)**2+(y[-1]-target2_list[i]* *2)<=50:
  31. print"the altitude,the proper theta:",target2_list[i],theta
  32. theta_proper.append(theta)
  33. break

此时我让设计点落在固定点周围50米内,运行结果如图:
此处输入图片的描述
可见对于每一个高度,只对应一个角度。调整范围到40米,如图:
此处输入图片的描述
可见对于海拔为零的地方,在此精度范围内,没有出射角与之对应。
选取精度为100米,如图:
此处输入图片的描述
在此精度下,在某些海拔高度可能对应着多个角度。
可得出结论,精度越高,所对应的出射角越准确。
对于情况b,代码如下:

  1. import matplotlib.pyplot as plt
  2. import math
  3. v_proper=[]
  4. vx=[]
  5. vy=[]
  6. dt=0.1
  7. v=[]
  8. x=[]
  9. y=[]
  10. theta=45
  11. bm=4e-5
  12. T=200
  13. a=6.5e-3
  14. c=2.5
  15. g=9.8
  16. target1=21229.8
  17. target2_list=[2821.8,4498.95,6463.31]
  18. for v_ini in range(640,710):
  19. v.append(v_ini)
  20. vx.append(v_ini*math.cos(theta*math.pi/180))
  21. vy.append(v_ini*math.sin(theta*math.pi/180))
  22. x.append(0),y.append(0)
  23. while x[-1]<=26000:
  24. vx.append(vx[-1]-bm*dt*v[-1]*vx[-1]*(1-a*y[-1]/T)**c)
  25. vy.append(vy[-1]-g*dt-bm*dt*v[-1]*vy[-1]*(1-a*y[-1]/T)**c)
  26. x.append(x[-1]+vx[-1]*dt)
  27. y.append(y[-1]+vy[-1]*dt)
  28. v.append(math.sqrt(vx[-1]**2+vy[-1]**2))
  29. for i in range(3):
  30. if math.sqrt((x[-1]-target1)**2+(y[-1]-target2_list[i])**2)<=50:
  31. print"the altitude,the proper v:",target2_list[i],v_ini
  32. v_proper.append(v_ini)
  33. break

当精度取为50米时,结果如图:
此处输入图片的描述
对于每一高度,可对应一定范围内的速度值。
改变50至20,结果如图:
此处输入图片的描述
此时可取的速度范围变小,精确度提高

结论

可以用此模型进行定点打击,相对于20000米的打击,精度在50米内可以接受。从结果可看出,当海拔高度变低时,相应的出射速度也变低。

致谢

参考13级学长关于确定打击目标的代码

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