Matlab仿真炮弹飞行轨迹——探究射弹参数对飞行轨迹的影响
目錄
- 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的情況進行研究分析,代碼如下:
通過對比可知,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仿真炮弹飞行轨迹——探究射弹参数对飞行轨迹的影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断dll是版本(Debug Or Re
- 下一篇: 【MATLAB】无人驾驶车辆的模型预测控