内弹道程序报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

内弹道程序报告

姓名:

学号:

专业:武器发射工程

学院:能源与动力工程学院

指导教师:***

1.程序功能

对于一般的内弹道方程组,微分方程是非线性的,编制通过数值解法进行求解的程序。

2.设计思路和整体方案

(1)输入已知的数据,包括火炮构造,弹丸诸元,装药条件,起始条件,步长等参数。

(2)进行一些常量的计算,方便在程序中进行使用。

(3)计算内弹道方程中变量的初值。

(4)将内弹道方程组进行量纲化,然后使用龙格库塔法计算微分方程,包括最大压力搜索和特征点判断,得出各个过程的数

据。

(5)将程序输出成表格和曲线。

3.程序遇到的主要问题和解决方案

(1)在程序中首先要编制一个四阶的龙格库塔子函数,同时还要编制一个微分方程右端子函数。在龙格库塔子函数编制过程中借鉴了之前导弹运动弹道程序的编制。

void rk(n, h)

int n;

double h;

{

extern void dery();

double a[4], old_y[6], Y1[6], *dy;

int i, j;

dy = calloc(n, sizeof(double));

a[0] = a[1] = h / 2;

a[2] = a[3] = h;

dery(n, dy, Y);

for (i = 0; i < n; i++)

old_y[i] = Y[i];

for (j = 0; j < 3; j++)

{

for (i = 0; i < n; i++)

{

Y1[i] = old_y[i] + a[j] * dy[i];

Y[i] = Y[i] + a[j + 1] * dy[i] / 3;

}

dery(n, dy, Y1);

}

for (i = 0; i < n; i++)

Y[i] = Y[i] + a[0] * dy[i] / 3;

free(dy);

return;

}

(2)在最大压力点的判断上也出现了问题,为了判断最大压力点设置三个数组分别记录三组数据,当第二组的压强大于第一和第三组的

压强时,那最大压强点就在第二组附近,然后减小步长进行精确的计算。

do {

t[0] = Y[0]; kesai[0] = Y[1]; z[0] = Y[2]; l[0] = Y[3]; v[0] = Y[4]; p[0] = Y[5];

ta = t[0]; kesaia = kesai[0]; za = z[0]; la = l[0]; va = v[0]; pa = p[0];

t[0] = t[1]; v[0] = v[1]; p[0] = p[1]; kesai[0] = kesai[1]; z[0] = z[1]; l[0] = l[1];

t[1] = ta; v[1] = va; p[1] = pa; kesai[1] = kesaia; z[1] = za; l[1] = la;

rk(6, 0.005);

t[2] = Y[0]; kesai[2] = Y[1]; z[2] = Y[2]; l[2] = Y[3]; v[2] = Y[4]; p[2] = Y[5];

if (p[2] < p[1]) //寻找最大压强点

break;

result();

} while (Y[3]* lo<= 3.624);

4.程序图像和分析

p-t图像

p-l图像

v-t图像

v-l图像

图像分析:最后输出的四个图像与书上实验得出的很相似,P不断增

大达到最大值308MPa,与实验结果相差不大,然后不断减。其他数据也变化正常,例如ψ和Z都是不断增大然后分别达到 1.0000和1.4434.。

相关文档
最新文档