箭头60kg,总冲量400KN·s,总推进剂180kg,总质量500kg,请编程设计二级探空火箭并优化设计一二级分配方案,使火箭飞行高度最大。
程序编的比较粗糙,仅供参考。
clear
clc
Cd=0.2;%阻力系数
Cl=0.1;%升力系数
alpha=0; %攻角
S=0.1; %参考面积,m^2
g=9.8; %重力加速度
row=1; %大气密度
Dt=0.001;
n1=1;
for m1=40:20:110 %一级推进剂质量,kg
m2=180-m1; %二级推进剂质量,kg
for I1=100000:20000:300000 %一级总比冲
I2=400000-I1; %二级总比冲
for F1=(500*g+100):500:20000
t1=I1/F1;
for F2=((500-m1-20)*g+100):500:20000
t2=I2/F2;
x=0;
y=0;
v=35;
t=0;
theta=90*pi/180; %弹道倾角
flag=0;
dy=0;
while 1
if v<=0 %速度为零时是弹道最高点
flag=0;
break;
end
if dy<0
flag=0; %
break;
end
if t<t1
F=F1;
M=500-m1/t1*t;
if M<= 500-m1-20
flag=1;%非正常中止,置flag为1
break;
end
elseif t<t1+t2
F=F2;
M=500-m1-20-(180-m1)/t2*t;
if M<=60 %60kg为弹头质量
flag=1;%非正常中止,置flag为1
break;
end
else
F=0;
M=60;
end
dv=(F*cos(alpha)-1/2*row*v^2*Cd*S-M*g*sin(theta))/M;
dtheta=(F*sin(alpha)+1/2*row*v^2*Cl*S-M*g*cos(theta))/(M*v);
dy=v*sin(theta);
dx=v*cos(theta);
v=v+dv*Dt;
theta=theta+dtheta*Dt;
y=y+dy*Dt;
x=x+dx*Dt;
t=t+Dt;
end
if flag==1
continue;
end
state(:,n1)=[m1;m2;I1;I2;F1;F2;t1;t2]; %一二级参数配置
y_store(n1)=y; %高度
n1=n1+1;
end
end
end
end
[H_max,n]=max(y_store);
disp('最大高度为:')
H_max
disp('------相应参数配置-----')
disp('一级配置:')
disp('一级质量:')
state(1,n)
disp('一级总比冲:')
state(3,n)
disp('一级发动机推力:')
state(5,n)
disp('一级飞行时间:')
state(7,n)
disp('二级配置:')
disp('二级质量:')
state(2,n)
disp('二级总比冲:')
state(4,n)
disp('二级发动机推力:')
state(6,n)
disp('二级飞行时间:')
state(8,n)
运行结果:
最大高度为:
H_max =
2.0077e+004
------相应参数配置-----
一级配置:
一级质量:
ans =
100
一级总比冲:
ans =
240000
一级发动机推力:
ans =
20000
一级飞行时间:
ans =
12
二级配置:
二级质量:
ans =
80
二级总比冲:
ans =
160000
二级发动机推力:
ans =
3.8240e+003
二级飞行时间:
ans =
41.8410