1、 课程设计报告 一.题目 运载火箭运载性能分析 1. 总体参数 表 1 两种改进型的总体参数 状态 名称 一子级加长 1m(改进型 1) 二子级加长 1m(改进型 2) 第一级 第二级 第一级 第二级 有效载荷质量(kg) 3100 3100 起飞质量(kg) 200509 40713 200543 50995 关机点质量(kg) 51013 6943 61034 7344 有效推进剂质量比 0.7456 0.8295 0.69566 0.8560 发动机比冲(s) 289 296.13 289 296.1
2、3 推重比 1.417 1.417 有效推进剂质量(kg) 149496 33770 139509 43651 结构质量(kg) 10300 3843 10039 4244 发动机推力(N) 2786093 565711 2786565 708580 发动机秒流量(kg/s) 983.119 194.933 983.285 244.014 发动机工作时间(s) 152.063 173.239 141.881 178.887 参考面积 S = d 2 =8.81413m 2 ,其中 d = 3.35m ; 4 阻力系数 Cd= 0.2 2.
3、 俯仰角的设计 z 改进型 1 程序角设计方案为:一子级从 90 度线性变化到 14 度,二子级从 14 度线性变 化到 2 度。 z 改进型 1 程序角设计方案为:一子级从 90 度线性变化到 18 度,二子级从 18 度线性变 化到 4 度。 二.所用到的计算公式 m dv = dt d p − 0.5ρv2c − mg sin θ dx = v cosθ dt dy = v sin θ dt 三.编程思想及框图 由于编程的目的是解决求解微分方程的解,所以可以采用计算方法里面的龙格库 塔求解法,或者欧拉求解法,我选用的是龙格库塔求解法,我
4、的设计思想是这样的 主函数是解方程,另外建立火箭的模型,大气密度用函数计算,整合到 mian 函数中 进行解算,对比两种改进型的高度,速度及距离随时间的变化规律,作出判断。 大气密度模 块 龙格库塔积 分模块 火箭模型分 改进型一号 和改进型二 号及第一和 第二级 四.程序代码 //头文件 rocket3.h //完成两种改进型火箭的弹道特性计算,作者:胡攀 最后修改:2008-12-23 19:30 #include "stdio.h" #include "math.h" #ifndef ROCKET
5、H #define ROCKET_H double ru(double h); void kuta (int n, double t, double midu, double h, double* y, void Fct( double t, double midu, double* y, double* f));//龙格库塔积分函数 void Fct1(double t, double midu, double* y, double* f); //改进型一号的第一级火箭模型 void Fct2(double t, double midu, double* y, double*
6、f);
//改进型一号的第二级火箭模型
void Fct3(double t, double midu, double* y, double* f);
//改进型二号的第一级火箭模型
void Fct4(double t, double midu, double* y, double* f);
//改进型二号的第二级火箭模型
double ru(double h);
//大气密度函数
#endif
//主函数
#include
7、数中各变量定义 n 是模型状态量数 ,h 是步长,t 是时间,midu 为大气密度 int n,j; double h,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(
8、y[2]); kuta(n, t,midu, h, y, Fct1); t=h*j; fprintf(fp,"%lf %lf %lf %lf\n",t,y[0],y[1],y[2]); //写进文件 a.text if(t>=tf) break; } printf(" 第一级火箭分离时,火箭速度 %lf m/s ,射程 %lf m,高度 %lf m\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
9、 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(" 第二级火箭分离时,火箭速度 %lf m/s ,射程 %lf m,高度 %lf m\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=
10、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(" 第一级火箭分离时,火箭速度 %lf m/s ,射程 %lf m,高度 %lf m\n",y[0],y[1],y[2]); tf=178.887; t=0; for(j=0;1;j++) //改进型二号第二级火箭发动机 {
11、 midu=ru(y[2]); kuta(n, t,midu, h, y, Fct4); t=h*j; if(t>=tf) break; fprintf(fp,"%lf %lf %lf %lf\n",t+141.881,y[0],y[1],y[2]); //写进文件 b.text } printf(" 第二级火箭分离时,火箭速度 %lf m/s ,射程 %lf m,高度 %lf m\n",y[0],y[1],y[2]); //火箭各级的函数模型 #include"rocket3.h" void Fct1( double t, double midu, dou
12、ble* y, double* f) { double m,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;
13、 f[1]=y[0]*cos(st); f[2]=y[0]*sin(st); } void Fct2( double t, double midu, double* y, double* f) { double m,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=173.239; g0=9.8; mf=194.933; p=565711; st=14*3.1415926/180-t*(12*3.1415926/18
14、0)/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( double t, double midu, double* y, double* f) { double m,p,Cd,d,s,g,g0,R,st,mf,tf; Cd=0.2; //改进型二号 第一级火箭发动机 R=6378135; Cd=0.2;
15、 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( double t, double midu, double* y, d
16、ouble* f) { double m,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=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;
17、 f[1]=y[0]*cos(st); f[2]=y[0]*sin(st); } } #include"rocket3.h" double ru(double h) { double T,T0=288.15,ru,ru0=1.2495; if (h>=0&&h<=11000) { T=(288.15-0.0065*h); ru=ru0*pow((T/T0),4.25588); } else if(h>=11000&&h<=20000) { T=216.65; ru=0.36392/pow(2.718281828459,(h-11000)/6341.62)
18、 } else if(h>=20000&&h<=32000) { T=(228.65+0.001*(h-20000)); ru=0.088035*pow(216.6/T,35.1632); } else if(h>=32000&&h<=47000) { T=228.65+0.0028*(h-32000); ru=0.013225*pow(228.65/T,13.2011); } else if(h>=47000&&h<=51000) { T=270.65; ru=0.00142754/pow(2.718281828459,((h-47000)/792
19、2.27)); } else if(h>=51000&&h<=71000) { T=270.65-0.0028*(h-51000); ru=0.0008616*pow(T/270.65,11.2011); } else if(h>=71000&&h<=86000) { 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" ///////////////////
20、/////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// //n 为状态数,t 为时间,h 为步长,y 为状态指针 void kuta (int n, double t, double midu, double h, double* y, void Fct( double t, double midu, double* y, double* f)
21、)
{
int i;
double *f;
double k1,k2,k3,k4,k;
f=new double[n];
(*Fct)( t, midu, y, f);
for(i=0;i
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818