探空火箭优化设计

箭头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


你可能感兴趣的:(源代码,matlab,设计)