python弹道初步:帮柱子想办法干他一炮

您所在的位置:网站首页 弹道高度计算软件 python弹道初步:帮柱子想办法干他一炮

python弹道初步:帮柱子想办法干他一炮

2024-07-11 03:17| 来源: 网络整理| 查看: 265

文章目录 高中学渣的弹道方程火炮的弹道方程柱子的角度

高中学渣的弹道方程

炮弹出膛之后走的基本就是抛物线,如果要求不太高的话,高中生就可以解决最简单的弹道问题——列个抛物线方程就好了。

y = v y t − 1 2 g t 2 x = v x t → t = 2 v y g x = 2 v y v x g = 2 v 2 g cos ⁡ θ sin ⁡ θ = v 2 sin ⁡ ( 2 θ ) g \begin{aligned} y&=v_{y}t-\frac{1}{2}gt^2\\ x&=v_{x}t \end{aligned}\to \begin{aligned} t&=\frac{2v_{y}}{g}\\ x&=\frac{2v_{y}v_{x}}{g}=\frac{2v^2}{g}\cos\theta\sin\theta=\frac{v^2\sin(2\theta)}{g} \end{aligned} yx​=vy​t−21​gt2=vx​t​→tx​=g2vy​​=g2vy​vx​​=g2v2​cosθsinθ=gv2sin(2θ)​​

上式中, x x x为柱子到指挥所的距离, v , θ v,\theta v,θ是火炮出膛时的速度大小与方向。

当年柱子用的是82毫米迫击炮,仿的是法国勃兰特81mm迫击炮,之所以大了1mm,皆因日本人也仿了这款。这样日军的炮弹就可以塞进我们的炮膛,而我们的炮弹日军却没法用。。可惜后来老蒋买了法国产品,导致我们的炮弹没法用只能用砖磨。。。

这个炮重7.95kg,初速为196m/s,仰角可以给到45-85°,如果按照上式计算,那么 x m a x = 3841 m x_{\text max}=3841\text m xmax​=3841m,然而实际最大射程为2850m,这说明如果让一个学渣去设计弹道,那么柱子又得挨李云龙一顿臭骂。

火炮的弹道方程

如果不考虑炮弹的形状,也就不必考虑攻角,炮弹的质心运动方程还是牛顿定律,区别无非是要考虑一些阻力,一般总阻力可表示为

F = 1 2 ρ v 2 A C D F=\frac{1}{2}\rho v^2AC_D F=21​ρv2ACD​

其中, ρ \rho ρ为空气密度, v v v为速度, A A A是以弹径为基准的横截面积, C D C_D CD​为阻力系数,范围在0到2之间,当速度低于300m/s时为常量,这里设0.4。

在11000m以下,空气密度的经验公式为

T = T 0 − 0.00649 h ρ = ρ 0 ( T T 0 ) 4.25588 → ρ = ρ 0 ( T 0 − 0.00649 h T 0 ) 4.25588 \begin{aligned} T&=T_0-0.00649h\\ \rho&=\rho_0(\frac{T}{T_0})^{4.25588} \end{aligned}\to \rho=\rho_0(\frac{T_0-0.00649h}{T_0})^{4.25588} Tρ​=T0​−0.00649h=ρ0​(T0​T​)4.25588​→ρ=ρ0​(T0​T0​−0.00649h​)4.25588

设 ρ 0 = 1.29 k g / m 3 , T 0 = 10 ° = 283 K \rho_0=1.29kg/m^3,T_0=10°=283K ρ0​=1.29kg/m3,T0​=10°=283K,令 y y y为炮弹所在高度,则

ρ = 1.29 ( 1 − 0.00649 y 283 ) 4.25588 \rho=1.29(1-\frac{0.00649y}{283})^{4.25588} ρ=1.29(1−2830.00649y​)4.25588

从而阻力加速度为

a = 1.63764 × 1 0 − 4 ⋅ ( 283 − 0.00649 y 283 ) 4.25588 v 2 a=1.63764\times10^{-4}\cdot(\frac{283-0.00649y}{283})^{4.25588} v^2 a=1.63764×10−4⋅(283283−0.00649y​)4.25588v2

记为 a = C ( y ) v 2 a=C(y)v^2 a=C(y)v2则其运动方程为

d v x d t = − C ( y ) v x 2 d v y d t = − C ( y ) v y 2 − g d x d t = v x d y d t = v y \begin{aligned} \frac{\text dv_x}{\text dt}&=-C(y)v_x^2\\ \frac{\text dv_y}{\text dt}&=-C(y)v_y^2-g\\ \frac{\text dx}{\text dt}&=v_x\\ \frac{\text dy}{\text dt}&=v_y \end{aligned} dtdvx​​dtdvy​​dtdx​dtdy​​=−C(y)vx2​=−C(y)vy2​−g=vx​=vy​​

接下来计算一下,当用45°发射炮弹时,得到其弹道为

在这里插入图片描述

其x方向的射程基本与2850相近,这说明当年兰伯特公司说不定也用我们的这个方法算的弹道。如果你有幸穿越到那个年代,同时还看过本文,那你就是当仁不让的抗日弹道专家了。

代码为

import numpy as np import matplotlib.pyplot as plt dt = 0.001 def C(y,T0): return 1.63764/10000*(1-0.00649*y/T0)**4.25588 def pathway(v0,theta,T0): x,y = 0,0 xs,ys = [],[] vx = v0*np.cos(theta) vy = v0*np.sin(theta) while(y>=0): xs.append(x) ys.append(y) vx -= (C(y,T0)*vx**2)*dt vy -= (C(y,T0)*vy**2+9.81)*dt x += vx*dt y += vy*dt return xs,ys if __name__ == "__main__": xs,ys = pathway(196,np.pi/4,283) plt.plot(xs,ys) plt.show()

当仰角分别为85°、70°、55°时,其弹道轨迹为

85°70°55°在这里插入图片描述在这里插入图片描述在这里插入图片描述 柱子的角度

接下来我们想办法得到角度和射程的关系,对程序稍作修改

def getMaxX(v0,theta,T0): x,y = 0,0 vx = v0*np.cos(theta) vy = v0*np.sin(theta) while(y>=0): vx -= (C(y,T0)*vx**2)*dt vy -= (C(y,T0)*vy**2+9.81)*dt x += vx*dt y += vy*dt return x if __name__ == "__main__": theta = np.arange(45,85,1) xs = [getMaxX(196,th,283) for th in theta*np.pi/180] plt.plot(theta,xs) plt.show()

在这里插入图片描述

所以柱子能一炮干掉鬼子的指挥部,也是需要技术的。

柱子说向前推进500米才能打到鬼子的指挥部,也就是说鬼子的指挥部大概在3000米开外。相对于柱子的技术而言,李云龙能在三千米外发现鬼子的指挥部,这才是万人敌的真本事。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3