目录

  • 1.分析炮弹受力
  • 2.设定参数并仿真
  • 3.通过仿真寻找最佳射弹速度
    • 3.1.射弹角度的影响
    • 3.2.射弹速率的影响
    • 3.3.炮弹属性和空气的影响
      • 3.3.1.空气阻力系数的影响
      • 3.3.2.炮弹质量的影响

1.分析炮弹受力

假设炮弹在飞行过程中可以看成质点,运动时仅考虑初始速度、重力加速度以及空气阻力的影响。考虑平面是X-Y二维的情况,假设位置、速度、加速度的X和Y方向各自是解耦的。
加速度=重力加速度(矢量)+空气阻力加速度(矢量)
重力加速度不需要多说,为恒定值;空气阻力较为复杂,经过查阅资料可知,空气阻力的方向和物体与空气的相对运动方向相反,大小为f=12Cρν2f=\frac{1}{2}C\rho\nu^2f=21​Cρν2其中ν\nuν为物体相对于空气的速度,C为空气阻力系数,由物体的形状决定,ρ\rhoρ为空气密度,一般正常干燥空气为1.29g/L左右。
由于位置由X和Y坐标共同决定,因此也可以将速度和加速度分解为X和Y方向两个矢量,具体的运算关系如下:
{P→=P→+Tt∗V→V→=V→+Tt∗a→a→=af→+ag→\begin{cases} \overrightarrow{P}=\overrightarrow{P}+T_t*\overrightarrow{V}\\ \overrightarrow{V}=\overrightarrow{V}+T_t*\overrightarrow{a}\\ \overrightarrow{a}=\overrightarrow{a_f}+\overrightarrow{a_g} \end{cases}⎩⎪⎪⎨⎪⎪⎧​P=P+Tt​∗VV=V+Tt​∗aa=af​​+ag​​​
其中TtT_tTt​为仿真间隔,P→、V→,a→\overrightarrow{P}、\overrightarrow{V},\overrightarrow{a}P、V,a分别为炮弹当前时刻的位移、速度、加速度矢量,af→、ag→\overrightarrow{a_f}、\overrightarrow{a_g}af​​、ag​​分别为空气阻力加速度和重力加速度。

2.设定参数并仿真

T=30;%仿真时间
Tt=0.05;%仿真间隔
P=[0,0];%炮弹的初始点坐标[X,Y]
V=[50,50];%炮弹的初始速度
M=2;%炮弹自重
C=0.35;%空气阻力系数
rou=1.29;%空气密度
D=0.06;%炮弹直径
S=pi*D^2/4;%炮弹迎风面积
k=0.5*C*rou*S/M;%空气阻力加速度总系数
af=-k*[V(1)^2,V(2)^2];%空气阻力系数
ag=[0,-9.8];%重力加速度
figure;
title('模拟炮弹飞行轨迹');
%xlim([0,600]);ylim([0,140]);
hold on;
for i=0:Tt:Tif P(2)<0,disp('到达地面,已仿真结束!'),disp([num2str(i),'s']),break,endplot(P(1),P(2),'.');hold on;a=af+ag;%计算总的加速度V=V+a*Tt;%计算当前速度P=P+V*Tt;%计算当前位置af=-k*[V(1)^2,V(2)^2];%当前空气阻力加速度pause(0.01);%动画延迟%disp(['已仿真',num2str(i),'s'])
end


初始速度为V→=(50,50)\overrightarrow{V}=(50,50)V=(50,50),可以看出由于空气阻力的影响,轨迹的后半段的飞行距离明显不如前半段。通过修改不同的参数:
①初始速度V→\overrightarrow{V}V
②空气阻力系数C
③炮弹直径D
④炮弹质量M
可以粗略地得知四个参数对炮弹飞行轨迹的影响。

3.通过仿真寻找最佳射弹速度

假设炮弹的发射速率固定,那么通过修改发射角度,可以给炮弹的飞行轨迹的诸多指标进行评价。例如飞行距离、飞行时间、飞行轨迹等等。为了方便我们对比各参数,我们对代码稍作修改即可。

3.1.射弹角度的影响

保持射弹速率为50250\sqrt{2}502​,控制发射角度,观察炮弹的飞行轨迹,代码如下:

T=30;%仿真时间
Init_angle=[30,45,60];
Tt=0.05;%仿真间隔
P=[0,0];%炮弹的初始点坐标[X,Y]
M=2;%炮弹自重
C=0.35;%空气阻力系数
rou=1.29;%空气密度
D=0.06;%炮弹直径
S=pi*D^2/4;%炮弹迎风面积
k=0.5*C*rou*S*rou/M;%空气阻力加速度总系数
af=-k*[V(1)^2,V(2)^2];%空气阻力系数
ag=[0,-9.8];%重力加速度
figure;
%xlim([0,600]);ylim([0,140]);
hold on;
for j=1:size(Init_angle,2)V=50*sqrt(2)*[cos(Init_angle(j)*pi/180),sin(Init_angle(j)*pi/180)];%计算初速度P=[0,0];%重置位置subplot(3,1,j);for i=0:Tt:Tif P(2)<0,disp('到达地面,已仿真结束!'),disp([num2str(i),'s']),break,endplot(P(1),P(2),'.');hold on;a=af+ag;%计算总的加速度V=V+a*Tt;%计算当前速度P=P+V*Tt;%计算当前位置af=-k*[V(1)^2,V(2)^2];%当前空气阻力加速度%pause(0.01);%动画延迟%disp(['已仿真',num2str(i),'s'])end title(['射弹角度:',num2str(Init_angle(j)),'° ','飞行时间:',num2str(i),'s','飞行距离:',num2str(P(1))])
end

效果如下:

可以看出,在目前的空气阻力系数、炮弹直径和质量以及射弹速率条件下,45°出射角可以获得最长的射弹距离,而30°的出射角飞行时间最短,而60°的出射角射弹距离最短,飞行时间最长。为了让我们得出更加精确的结论,我们进一步缩减变量步长——通过修改Init_angle(初始速度矩阵)实现,则可以得到该状态下的最优出射角:


因此可以粗略的看出,在此炮弹属性以及射弹速率的条件下,为获得最长射弹距离,45°角显然是最优角。若要获得更短的飞行时间,可以略微减小角度。

3.2.射弹速率的影响

保证射弹角度是一个定值45°,修改射弹速率,仿真代码如下:

T=30;%仿真时间
gain=[1,1.5,2,3];
Tt=0.05;%仿真间隔
P=[0,0];%炮弹的初始点坐标[X,Y]
M=2;%炮弹自重
C=0.35;%空气阻力系数
rou=1.29;%空气密度
D=0.06;%炮弹直径
S=pi*D^2/4;%炮弹迎风面积
k=0.5*C*rou*S*rou/M;%空气阻力加速度总系数
af=-k*[V(1)^2,V(2)^2];%空气阻力系数
ag=[0,-9.8];%重力加速度
figure;
%xlim([0,600]);ylim([0,140]);
hold on;
for j=1:size(gain,2)V=gain(j)*[50,50];%计算初速度P=[0,0];%重置位置subplot(2,2,j);for i=0:Tt:Tif P(2)<0,disp('到达地面,已仿真结束!'),disp([num2str(i),'s']),break,endplot(P(1),P(2),'.');hold on;a=af+ag;%计算总的加速度V=V+a*Tt;%计算当前速度P=P+V*Tt;%计算当前位置af=-k*[V(1)^2,V(2)^2];%当前空气阻力加速度%pause(0.01);%动画延迟%disp(['已仿真',num2str(i),'s'])end title(['射弹速率:',num2str(gain(j)*50),' ','飞行时间:',num2str(i),'s  ','飞行距离:',num2str(P(1))])
end

飞行轨迹图如下:

从飞行轨迹上可以看出,随着射弹速率的提高,飞行距离显著提高,但是射弹轨迹的对称性下降,说明空气阻力对飞行轨迹的影响逐渐加强。此时的45°角不再是最优出射角,可以就射弹速率为150的情况进行研究分析,代码如下:

T=30;%仿真时间
Init_angle=[35,40,45];
Tt=0.05;%仿真间隔
P=[0,0];%炮弹的初始点坐标[X,Y]
M=2;%炮弹自重
C=0.35;%空气阻力系数
rou=1.29;%空气密度
D=0.06;%炮弹直径
S=pi*D^2/4;%炮弹迎风面积
k=0.5*C*rou*S*rou/M;%空气阻力加速度总系数
af=-k*[V(1)^2,V(2)^2];%空气阻力系数
ag=[0,-9.8];%重力加速度
figure;
%xlim([0,600]);ylim([0,140]);
hold on;
for j=1:size(Init_angle,2)V=150*[cos(Init_angle(j)*pi/180),sin(Init_angle(j)*pi/180)];%计算初速度P=[0,0];%重置位置subplot(3,1,j);for i=0:Tt:Tif P(2)<0,disp('到达地面,已仿真结束!'),disp([num2str(i),'s']),break,endplot(P(1),P(2),'.');hold on;a=af+ag;%计算总的加速度V=V+a*Tt;%计算当前速度P=P+V*Tt;%计算当前位置af=-k*[V(1)^2,V(2)^2];%当前空气阻力加速度%pause(0.01);%动画延迟%disp(['已仿真',num2str(i),'s'])end title(['射弹角度:',num2str(Init_angle(j)),'° ','飞行时间:',num2str(i),'s','飞行距离:',num2str(P(1))])
end


通过对比可知,45°不再是最佳出射角,35°~45°范围内射弹距离变化不是很大,但是减小出射角度可以大大地缩短飞行时间。

3.3.炮弹属性和空气的影响

假设忽略空气阻力的影响,通过物理学的知识很容易可以计算出出射角为45°时总能获得最大的射弹距离。但如果空气阻力不可忽略,通过上文的探讨可以发现,随着空气阻力因素逐渐增强(射弹速率的增加),略微减小射弹角度有利于获得更长的射弹距离和更短的飞行时间,下面我们就通过其他几个因素调节空气阻力对炮弹的影响来印证此定律。(炮弹直径、炮弹质量、炮弹的空气阻力系数、空气密度)

3.3.1.空气阻力系数的影响

将空气阻力系数C设为一个参数矩阵,将其作为外层循环,出射角作为内层循环,对比不同空气阻力系数下三种出射角的飞行轨迹。

close all
clear
T=30;%仿真时间
Init_angle=[35,40,45];
Tt=0.05;%仿真间隔
P=[0,0];%炮弹的初始点坐标[X,Y]
M=2;%炮弹自重
C=[0.25,0.35,0.5];%空气阻力系数
rou=1.29;%空气密度
D=0.06;%炮弹直径
S=pi*D^2/4;%炮弹迎风面积
ag=[0,-9.8];%重力加速度
figure;hold on;
for N=1:size(C,2)k=0.5*C(N)*rou*S*rou/M;%空气阻力加速度总系数for j=1:size(Init_angle,2)V=50*sqrt(2)*[cos(Init_angle(j)*pi/180),sin(Init_angle(j)*pi/180)];%计算初速度af=-k*[V(1)^2,V(2)^2];%空气阻力初始加速度P=[0,0];%重置位置subplot(3,3,(N-1)*size(Init_angle,2)+j)for i=0:Tt:Tif P(2)<0,disp('到达地面,已仿真结束!'),disp([num2str(i),'s']),break,endplot(P(1),P(2),'.');hold on;a=af+ag;%计算总的加速度V=V+a*Tt;%计算当前速度P=P+V*Tt;%计算当前位置af=-k*[V(1)^2,V(2)^2];%当前空气阻力加速度%pause(0.01);%动画延迟%disp(['已仿真',num2str(i),'s'])end title({['空气阻力系数:',num2str(C(N)),...' 射弹角度:',num2str(Init_angle(j)),'°'];...['飞行时间:',num2str(i),'s ',...'飞行距离:',num2str(P(1))]})end
end

效果如下:

可以看出,随着炮弹的空气阻力系数加大,空气阻力的影响逐渐显著,35°~45°之间的射弹距离变化逐渐减小,但是飞行略微减小角度却可以获得更短的飞行时间,最佳的出射角逐渐趋向于40°。总体来说,较大的空气阻力系数应该略微减小出射角,反之,应该略微增大出射角使之更接近于45°。
从空气阻力的计算表达式f=0.5Cρν2f=0.5C\rho\nu^2f=0.5Cρν2可以看出,空气密度增大以及初速度增大对于出射角的影响应该类似。我们也可以大体上作出推断,由于af=f/Ma_f=f/Maf​=f/M,在保持其他变量不变的情况下炮弹的质量越大,空气阻力影响越小,最佳出射角越接近于45°。

3.3.2.炮弹质量的影响

按照同样的方法,将质量设为一个参数矩阵作为外循环,角度矩阵作为内循环进行仿真,代码如下:

close all
clear
T=30;%仿真时间
Init_angle=[35,40,45];
Tt=0.05;%仿真间隔
P=[0,0];%炮弹的初始点坐标[X,Y]
M=[2,3,4];%炮弹自重
C=0.35;%空气阻力系数
rou=1.29;%空气密度
D=0.06;%炮弹直径
S=pi*D^2/4;%炮弹迎风面积
ag=[0,-9.8];%重力加速度
figure;hold on;
for N=1:size(M,2)k=0.5*C*rou*S*rou/M(N);%空气阻力加速度总系数for j=1:size(Init_angle,2)V=50*sqrt(2)*[cos(Init_angle(j)*pi/180),sin(Init_angle(j)*pi/180)];%计算初速度af=-k*[V(1)^2,V(2)^2];%空气阻力初始加速度P=[0,0];%重置位置subplot(3,3,(N-1)*size(Init_angle,2)+j)for i=0:Tt:Tif P(2)<0,disp('到达地面,已仿真结束!'),disp([num2str(i),'s']),break,endplot(P(1),P(2),'.');hold on;a=af+ag;%计算总的加速度V=V+a*Tt;%计算当前速度P=P+V*Tt;%计算当前位置af=-k*[V(1)^2,V(2)^2];%当前空气阻力加速度end title({['炮弹质量:',num2str(M(N)),...' 射弹角度:',num2str(Init_angle(j)),'°'];...['飞行时间:',num2str(i),'s ',...'飞行距离:',num2str(P(1))]})end
end

效果如下:

可以看出,这个和我们的预估是一样的。
综上所述,决定最佳出射角的综合因子是
af0=Cρν022Ma_{f_0}=\frac{C\rho{\nu_0}^2}{2M}af0​​=2MCρν0​2​
该因子越大,最佳出射角在45°基础上减小的角度越大,该因子越小,最佳出射角越接近于45°。
希望本文对您有帮助,谢谢阅读。

Matlab仿真炮弹飞行轨迹——探究射弹参数对飞行轨迹的影响相关推荐

  1. MATLAB相干成像系统,光学成像系统的模型及MATLAB仿真

    光学成像系统的模型及MATLAB仿真 本文将给出相干成像系统.非相干成像系统模型,以及像差对成像系统影响的模型,模型和相关概念主要参考goodman的<傅里叶光学>. 一.相干成像系统 相 ...

  2. matlab 求系统码的校验矩阵,数字通信系统matlab仿真

    课程设计报告 题目:基于MATLAB的通信系统仿真 ---信道编码对通信系统性能的影响 专业: 通信工程 姓名: XXX 学号: 0730xxxx 基于MATLAB的通信系统仿真 ---信道编码对通信 ...

  3. 用matlab模拟炮弹射击,matlab课程设计(坦克射击仿真).doc

    matlab课程设计(坦克射击仿真),matlab仿真课程设计,matlab仿真,matlab仿真实例,matlabsimulink仿真,matlab电路仿真,matlabpid仿真程序,matlab ...

  4. Matlab仿真PID控制(带M文件、simulink截图和参数分析)

    文章目录 0.符号说明 1.如何根据连续系统建立差分方程 1.1.获取连续系统的传递函数 1.2.获取离散系统的传递函数 1.3.转换为差分方程 2.基本PID控制原理 3.比较PID输出,分析参数产 ...

  5. 升压电路(Boost)的设计原理、参数计算及MATLAB仿真

    创作不易,感谢大家关注支持!需要的可以点击收藏! 升压(Boost)变换电路是一种输出电压大于等于输入电压的单管非隔离直流变换电路.它由直流电压源.电感.开关管.二极管.滤波电容.负载电阻组成,升压电 ...

  6. 用matlab画标准雷电波,雷电波发生器的MATLAB仿真及参数选取sc.doc

    雷电波发生器的MATLAB仿真及参数选取sc 雷电波冲击电流发生器的MATLAB/Simulink仿真及参数选取 摘要:本文介绍了雷电波冲击电流发生器的工作原理,对冲击电流发生器的放电回路进行了理论分 ...

  7. 【ISAR成像定标方法(4)—基于参数估计法的方位维定标MATLAB仿真】

    目录 前提介绍 基于LOG算子的目标散射点提取 基于ICPF的转速估计 ISAR成像定标仿真实验 结语 前提介绍 本章内容简介:分析了CPF(三次相位函数法),CICPF(相干三次相位函数法)和ICP ...

  8. matlab画极化码,极化码的matlab仿真(1)——参数设置

    根据老师的安排,对于极化码的了解从仿真开始. 仿真的手段有很多种.可以利用C,C++,matlab等进行仿真的实现.其中matlab由于具有强大的函数库,和壮观的矩阵运算能力,被(我们老师课题组)看中 ...

  9. matlab测零序电流,基于matlab╱simulink的矿井低压电缆绝缘参数在线监测的仿真研究...

    基于matlab/simulink的矿井低压电缆绝缘参数在线 监测的仿真研究 赵强,王彦文,霍春安,李小利 中国矿业大学,北京(100083) 摘要:本文叙述了MATLAB/SIULINK的特点,建立 ...

最新文章

  1. 程序员天花板:产后半年加薪升职,这位程序员妈妈绝了!
  2. swift - 根试图控制器的手势返回冲突 - push 新的tabbar控制器手势冲突
  3. Navigator 对象,能够清楚地知道浏览器的相关信息
  4. 本地Jupyter连接远程linux服务器
  5. STM32通用和复用功能IO
  6. ANSYS apdl命令流笔记10-------网格划分的三个步骤
  7. 基于Django框架的物联网空气质量监测系统的实现
  8. 模拟高清和数字高清摄像机的区别,全局快门CMOS 图像传感器,Interline Transfer CCD图像传感器
  9. layui做折线图_详解layuiAdmin单页版根据后台json数据动态生成左侧菜单栏
  10. leetcode_714. 买卖股票的最佳时机含手续费
  11. 《把时间当作朋友》---- 读书笔记
  12. 牛客观察 | 大厂疯狂招人背后: 中小企业要躺平“捡漏”吗?
  13. 计算机应用领域中CAL代表,计算机应用领域.doc
  14. 男朋友是一名程序员,他都好久没有交作业了
  15. mpt matlab 工具箱,matlab的mpt工具箱(含voronoi函数)
  16. 摩尔定律会失效吗?戈登·摩尔去世,享年94岁
  17. 牛客网——华为题库(41~50)
  18. php异端,《布偶剧》_布偶剧_NEWS下载网
  19. 注册香港公司过程中的几个注意细节
  20. Java后端实际开发规范

热门文章

  1. 看到一个blog的标语,有意思!
  2. MIP 扩展组件开发手册
  3. 问题 G: 区间权值
  4. mac上的mysql管理工具sequel pro
  5. JavaMail(四):接收邮件
  6. [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册
  7. Linux利用PROMPT_COMMAND实现审计功能
  8. $HOME/$user/.权限导致用户无法登陆图形界面
  9. 智能安全实验室-Defendio杀马2.4.0.420-实时防护-内存防护、新浏览器导航界面...
  10. python手机端给电脑端发送数据_期货交易软件有哪些比较好用?分手机端和电脑端...