前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python方式实现简易弹道计算机

Python方式实现简易弹道计算机

作者头像
算法与编程之美
发布2023-08-22 14:33:34
3240
发布2023-08-22 14:33:34
举报
文章被收录于专栏:算法与编程之美

1 问题

本周无意间刷到了德国豹2A5坦克的火控介绍,想自己编写一个不考虑空气阻力以及测风影响的简易弹道计算机(大口径火炮)。

2 方法

由高中物理知识了解到,炮弹出膛之后基本就是抛物线列个抛物线方程就好了;

百度得火炮的弹道方程:

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

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

设ρ0=1.29kg/m3,T0=10℃=283K,令y为炮弹所在高度,则;

所以阻力加速度为:

记为a=C(y)v2则其运动方程为:

以45度发射炮弹,得到的弹道曲线为:

以85°角发射炮弹,得到的弹道曲线为:

以70°角发射炮弹,得到的弹道曲线为:

以55°角发射炮弹,得到的弹道曲线为:

通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。

代码清单 1

import numpy as npimport matplotlib.pyplot as pltdt = 0.001def C(y,T0): return 1.63764/10000*(1-0.00649*y/T0)**4.25588def 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,ysif __name__ == "__main__": xs,ys = pathway(196,np.pi/4,283) plt.plot(xs,ys) plt.show()

3 结语

针对制作简易的弹道计算机问题,提出该方法,通过计算不同角度得到的抛物线实验,证明该方法是有效的,本文的方法未考虑战场的复杂环境及其时间复杂度,未来可以继续向函数中加入提前量计算器、横风矫正以及不同炮弹对应的风阻系数等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档