[关闭]
@rrtcc 2016-10-23T16:10:00.000000Z 字数 1694 阅读 19

第六次作业

迎面风阻 最小速度 高度


摘要

作业L1 2.10题强化版(引入迎面风阻):当打击目标在不同高度上时,计算炮弹所需的最小发射速度。(注意考虑目标高于炮弹和低于炮弹两种情况。)

背景

在第五次作业中,在炮弹打击系统中引入了简单的风阻并计算了相应的结果,本次作业要求引入迎面风阻,并计算炮弹所需的最小发射速度。

在引入迎面风阻时,假设风向水平,炮弹所受的的空气阻力如下

受力分解
与第五次作业的相关式结合

即可带入作业五的相关程序
考虑到题目要求最小速度,根据上次作业的相关结论,将角度范围设定在25到65的范围内,据此采用二分法来近似计算

正文

依据题意可以设计如下代码

  1. import math
  2. xx = 4000#unit:m
  3. yy = 120 #unit:m
  4. g = 9.8 #unit:m/s
  5. a = (6.5)*(math.pow(10,-3))
  6. Bm = 4*math.pow(10,-5) #unit:m^(-1)
  7. T = 300 #unit:K
  8. vw = -10 #unit:m/s
  9. va = 300 #unit:m/s
  10. sv = [va]
  11. sa = [0]
  12. s = xx
  13. for i in range(21):
  14. v = va
  15. v0 = 0
  16. angle = 25 + i*1
  17. for j in range(20):
  18. x = [0] #unit:m
  19. y = [0] # unit:m
  20. dt = 0.1 #unit:s
  21. vx = [v*math.cos(math.pi*angle/180)]
  22. vy = [v*math.sin(math.pi*angle/180)]
  23. while (x[-1]<=xx):
  24. if y[-1] > 46100:
  25. c = 0
  26. else:
  27. c = math.pow((1-(a*y[-1]/T)),2.5)
  28. Fx = -Bm*math.sqrt((v-vw)*(v-vw))*(vx[-1]-vw)*c
  29. Fy = -Bm*math.sqrt((v-vw)*(v-vw))*vy[-1]*c
  30. vx.append(vx[-1]+Fx*dt)
  31. vy.append(vy[-1]+(-g+Fy)*dt)
  32. x.append(x[-1]+vx[-2]*dt)
  33. y.append(y[-1]+vy[-2]*dt)
  34. r = (xx-x[-2])/(x[-1]-xx)
  35. y[-1] = (y[-2]+r*y[-1])/(r+1)
  36. x[-1] = xx
  37. if y[-1]>yy:
  38. vt = v
  39. v = v0+(vt-v0)/2
  40. if y[-1]<yy:
  41. v0 = v
  42. v = v0+(vt-v0)/2
  43. sv.append(v)
  44. sa.append(angle)
  45. print (sv,sa)
  46. vmin = min(sv)
  47. l = sv.index(vmin)
  48. amin = sa[l]
  49. print ('The minimum initial velocity:'+str(vmin)+'m/s')
  50. print('angle:'+str(amin)+'°')

运行结果
在4000m,y=0的对象时运行程序
alt text
The minimum initial velocity:219.2227m/s Angle:43°

考虑2000m外,y=0的对象时运行程序可得
alt text
The minimum initial velocity:146.0103m/s Angle:44°
考虑3000m外,y=700的对象时运行程序可得
alt text
The minimum initial velocity:206.6594m/s Angle:49°

结论

利用相关程序算出了V的极值,但利用二分法导致角度精度依然不够,需要改进

致谢

13级学长和百度

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