课程设计报告(火箭运载能力分析)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
一.题目
运载火箭运载性能分析
1. 总体参数
表1 两种改进型的总体参数
2. 俯仰角的设计
z改进型1 程序角设计方案为:一子级从90 度线性变化到14 度,二子级从14 度线性变化到2 度。
z改进型1 程序角设计方案为:一子级从90 度线性变化到18 度,二子级从18 度线性变化到4 度。
二.所用到的计算公式
d m dv =
dt
p − 0.5ρv 2c
− mg sin
θ dx
= v cos θ dt dy
= v sin θ dt
三.编程思想及框图
由于编程的目的是解决求解微分方程的解,所以可以采用计算方法里面的龙格库 塔求解法,或者欧拉求解法,我选用的是龙格库塔求解法,我的设计思想是这样的 主函数是解方程,另外建立火箭的模型,大气密度用函数计算,整合到 mian 函数中 进行解算,对比两种改进型的高度,速度及距离随时间的变化规律,作出判断。
四.程序代码
//头文件 rocket3.h
//完成两种改进型火箭的弹道特性计算,作者:胡攀 最后修改:2008-12-23 19:30 #include "stdio.h" #include "math.h" #ifndef ROCKET_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* 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
#include
#include"rocket3.h"
void main()
{
//主函数中各变量定义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(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, 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=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++)
//改进型二号第二级火箭发动机
{
midu=ru(y[2]);
kuta(n, t,midu, h, y, Fct4);