课程设计报告(火箭运载能力分析)
课程设计报告
.题目
运载火箭运载性能分析
1.
总体参数
表1两种改进型的总体参数
2.
俯仰角的设计
z改进型1程序角设计方案为:一子级从90度线性变化到14度,二子级从14度线性变
化到2。
z改进型1程序角设计方案为:一子级从90度线性变化到18度,二子级从18度线性变化到4。
.所用到的计算公式
dv
=p−0.5ρv2cd−mgsinθdx
=vcosθdtdy
=vsinθ.编程思想及框图
由于编程的目的是解决求解微分方程的解,所以可以采用计算方法里面的龙格库
,或者欧拉求解法,我选用的是龙格库塔求解法我的设计思想是这样的
主函数是解方程,另外建立火箭的模型,大气密度用函数计算,整合到mian函数中
,对比两种改进型的高度,速度及距离随时间的变化规律,作出判断。
.程序代码
//头文件rocket3.h//完成两种改进型,作者:胡攀:2008-12-2319:30#include"stdio.h"#include"math.h"#ifndefROCKET_H#defineROCKET_H
doubleru(double h);
voidkuta(intn,doublet,doublemidu,doubleh,double*y,voidFct(doublet,doublemidu,double*y,double*f));//龙格库塔积分函数voidFct1(doublet,doublemidu,double*y,double*f);//改进型一号的第一级火箭模型voidFct2(doublet,doublemidu,double*y,double*f);//改进型一号的第二级火箭模型voidFct3(doublet,doublemidu,double*y,double*f);//改进型二号的第一级火箭模型voidFct4(doublet,doublemidu,double*y,double*f);
//改进型二号的第二级火箭模型
double
//大气密度函数#endif//主函数
ru(doubleh);
#include#include#include"rocket3.h"void main(){
//主函数中各变量定义n是模型状态量数 ,hint n,j;
doubleh,t,tf,midu;double*y;FILE *fp;
printf("请输入积分步长'h'.\n");
scanf("%lf",&h); printf("开始计算改进型一号的运载特性\n"); n=3;y=new double[n];
fp=fopen("a.text","w");y[0]=0;
y[1]=0;y[2]=0;tf=152.063;t=0;
for(j=0;1;j++)
//改进型一号第一级火箭发动机
{
midu=ru(y[2]);
kuta(n,t,midu, h,y, Fct1);t=h*j;
fprintf(fp,"%lf%lf%lf
//写进文件a.text
if(t>=tf)
break;
,t,midu为大气密度
%lf\n",t,y[0],y[1],y[2]);
}
printf("第一级火箭分离时,火箭速度%lfm/s,射程%lfm,高度%lfm\n",y[0],y[1],y[2]);
tf=173.239;t=0;
for(j=0;1;j++)
//改进型一号第二级火箭发动机
{
midu=ru(y[2]);
kuta(n,t,midu, h,y, Fct2);t=h*j;if(t>=tf)
break;
fprintf(fp,"%lf%lf%lf%lf\n",t+152.063,y[0],y[1],y[2]);
//写进文件a.text
}
printf("第二级火箭分离时,火箭速度%lfm/s,射程%lfm,高度%lfm\n",y[0],y[1],y[2]);
printf("开始计算改进型二号的运载特性\n");fp=fopen("b.text","w");y[0]=0;y[1]=0;y[2]=0;
tf=141.881;t=0;
for(j=0;1;j++)
//改进型二号第一级火箭发动机
{
midu=ru(y[2]);
kuta(n,t,midu, h,y, Fct3);t=h*j;if(t>=tf)
break;
fprintf(fp,"%lf%lf%lf%lf\n",t,y[0],y[1],y[2]);
//写进文件b.text
}
printf(",火箭速度%lfm/s射程%lfm,高度%lfm\n",y[0],y[1],y[2]);
tf=178.887;t=0;
for(j=0;1;j++)
//改进型二号第二级火箭发动机
{
midu=ru(y[2]);
kuta(n,t,midu, h,
y, Fct4);
t=h*j;if(t>=tf)
break;
fprintf(fp,"%lf
//写进文件b.text
}
printf("
%lf%lf%lf\n",t+141.881,y[0],y[1],y[2]);
,火箭速度%lfm/s射程%lfm,高度%lf
m\n",y[0],y[1],y[2]);
//火箭各级的函数模型
#include"rocket3.h"
void Fct1( doublet, double midu,double*y,double*f){
doublem,p,Cd,d,s,g,g0,R,st,mf,tf;Cd=0.2;//改进型一号第一级火箭发动机R=6378135;Cd=0.2;d=3.35;s=d*d/4;tf=152.063;g0=9.8;
mf=983.119;p=2786093;
st=3.1415926/2-t*(76*3.1415926/180)/tf;m=200509-t*mf;
g=g0*(R/(R+y[2]))*(R/(R+y[2]));
f[0]=(p-0.5*midu*y[0]*y[0]*Cd*s-m*g*sin(st))/m;f[1]=y[0]*cos(st);f[2]=y[0]*sin(st);}
void Fct2( doublet, double midu,double*y,double*f){
doublem,p,Cd,d,s,g,g0,R,st,mf,tf;Cd=0.2;
第二级火箭发动机
R=6378135;Cd=0.2;d=3.35;
s=d*d/4;
//改进型一号
g0=9.8;
mf=194.933;p=565711;
st=14*3.1415926/180-t*(12*3.1415926/180)/tf;m=40713-t*mf;
g=g0*(R/(R+y[2]))*(R/(R+y[2]));
f[0]=(p-0.5*midu*y[0]*y[0]*Cd*s-m*g*sin(st))/m;f[1]=y[0]*cos(st);f[2]=y[0]*sin(st);}
void Fct3( doublet, double midu,double*y,double*f){
doublem,p,Cd,d,s,g,g0,R,st,mf,tf;Cd=0.2;
第一级火箭发动机
R=6378135;Cd=0.2;d=3.35;s=d*d/4;tf=141.881;g0=9.8;
mf=983.285;p=2786565;
st=3.1415926/2-t*(72*3.1415926/180)/tf;m=200543-t*mf;
g=g0*(R/(R+y[2]))*(R/(R+y[2]));
f[0]=(p-0.5*midu*y[0]*y[0]*Cd*s-m*g*sin(st))/m;f[1]=y[0]*cos(st);f[2]=y[0]*sin(st);}
void Fct4( doublet, double midu,double*y,double*f){
doublem,p,Cd,d,s,g,g0,R,st,mf,tf;Cd=0.2;
第二级火箭发动机
//改进型二号
//改进型二号
Cd=0.2;d=3.35;s=d*d/4;tf=178.887;g0=9.8;
mf=244.014;p=708580;
st=18*3.1415926/180.0-t*(14*3.1415926/180)/tf;m=50995-t*mf;
g=g0*(R/(R+y[2]))*(R/(R+y[2]));
f[0]=(p-0.5*midu*y[0]*y[0]*Cd*s-m*g*sin(st))/m;f[1]=y[0]*cos(st);f[2]=y[0]*sin(st);}
}
#include"rocket3.h"doubleru(double h){
doubleT,T0=288.15,ru,ru0=1.2495;if(h>=0&&h
T=(288.15-0.0065*h);
ru=ru0*pow((T/T0),4.25588);}
else if(h>=11000&&h
T=216.65;
ru=0.36392/pow(2.[1**********]9,(h-11000)/6341.62);
}
else if(h>=20000&&h
T=(228.65+0.001*(h-20000));
ru=0.088035*pow(216.6/T,35.1632);}
else if(h>=32000&&h
T=228.65+0.0028*(h-32000);
ru=0.013225*pow(228.65/T,13.2011);}
else if(h>=47000&&h
{
T=270.65;
ru=0.00142754/pow(2.[1**********]9,((h-47000)/7922.27));}
else if(h>=51000&&h
T=270.65-0.0028*(h-51000);
ru=0.0008616*pow(T/270.65,11.2011);}
else if(h>=71000&&h
T=214.65-0.002*(h-71000);
ru=0.000064211*pow(T/214.65,16.0818);}
else if(h>=86000)
ru=0;return(ru);}
#include"rocket3.h"
////////////////////////////////////////////////////////////////////////Construction/Destruction
////////////////////////////////////////////////////////////////////////n为状态数,t为时,h,y为状态指针
voidkuta(intn,doublet,doublemidu,doubleh,double*y,voidFct(doublet,doublemidu, double*y, double*f)){
int i;
double*f;
doublek1,k2,k3,k4,k;f=new double[n];
(*Fct)(t, midu, y,f);for(i=0;i
k=y[i];k1=f[i];y[i]=y[i]+k1*h/2;
(*Fct)(t, midu, y,f);k2=f[i];
y[i]=y[i]+k2*h/2;
(*Fct)(t, midu, y,f);k3=f[i];
y[i]=y[i]+k3*h;
(*Fct)(t, midu, y,f);
k4=f[i];
y[i]=k+(k1+2*k2+2*k3+k4)*h/6;}}.结果
图片对比
从上面的图片对比二的高度大各有六课程设计编程体会
,我们可以很明白看。
,改进型一的发动机工作完毕后,而改进型
,我还是学到了不少东西,比如努力的方向,要在航
天方面有所作为,需要学好的东西还有很多。编程的技巧还有很多,还有C语言中
。
针对的课程设计的这次作业,我感觉还是准备不够,,
,需要提高的地方还有很多!我也在努力完善。