计算火箭飞行空气阻力系数

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

计算火箭飞行空气阻力系数一问题描述及要求

小型火箭初始质量为1200千克,其中包括900千克燃料。火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生40000牛顿的恒定推力,当燃料用尽时引擎关闭。设火箭上升的整个过程中,空气阻力与速度平方成正比,比例系数记作k。

利用数据拟合,计算空气阻力系数k

1.观测数据保存于rocket.dat

2.图形显示拟合结果

二物理模型分析

本问题是变质量的受力问题,应当采用=dp

F

dt 而非

2

2

=

d x

F m

dt

计算。因此受力方程为:

2

dp dm dv

v m F mg kv dt dt dt

=+=−−

其中

015

m m t

=−,使用差分方法可以由速度求出对应的加速度,同时也由位移求出对应的速度,带入上述方程即可线型拟合出比例系数k。

三程序分析及设计

由上述受力分析可以得到下面的代码。先通过for循环构建新的差分处理后的数据,再使用拟合得出k值,并以此作图。

clc;

clear;

A=load('G:/rocket.dat');

for i=1:19

t(i)=(A(1,(i+1))+A(1,i))./2;

a(i)=(A(3,(i+1))-A(3,i))./(A(1,(i+1))-A(1,i));

velocitysquare(i)=((A(2,(i+1))-A(2,i))./(A(1,(i+1))-A(1,i))).^2;

F(i)=40000-9.8.*(1200-15.*t(i))-a(i).*(1200-

15.*t(i))+15.*sqrt(velocitysquare(i));

i=i+1;

end %差分法处理数据得到加速度以及相应时刻的速度

p=polyfit(velocitysquare,F,1);%拟合曲线

plot(velocitysquare,F,'*','color','r','linewidth',2);%绘制实际测量值

hold on;

plot(velocitysquare,p(1).*velocitysquare+p(2),'color','b','linewidth' ,1.2);%绘制拟合曲线

xlabel('v^2'); ylabel('F=40000-9.8×(1200-15×t)-a×(1200-15×t)+15×v'); text(0.5*max(100000),0.43*max(30000),sprintf('F=%5.4f v^2

disp(sprintf('k=%8.5f',p(1)));%输出k值

四程序运行结果及讨论

程序拟合得k= 0.33010。相应实测结果与以及由拟合结果反推的结果如下图1所示。

图1 v^2-f关系

解受力微分方程,将实际测量数据与k= 0.33010时的方程解析解绘制在同一张图上,如图2所示。相关微分方程代码见附录。

图2 拟合值与原始实际测量值

可以观察到,拟合值相较于实际测量值,无论是位移还是速度都相对偏大。这很有可能是由于出题人未意识到变质量受力问题不能简单使用dv F m dt

=公式计算。因此为了揣摩出题人的意图,使用2dv m F mg kv dt =−−重新计算,得到拟合k= 0.28980。其中v^2-f 关系如图3所示。

图3 v^2-f 关系

解受力微分方程,在k= 0.28980且使用2dv m F mg kv dt

=−−公式的情况下,得到图4拟合值与原始实际测量值的x-t 与v-t 关系图。

图4 拟合值与原始实际测量值

显然,图4相较于图2拟合更好。这说明了出题人存在考虑不周的可能。

综上所述,若考虑变质量,则k= 0.33010,否则k= 0.28980。现实情况下应更符合前者,但是此题数据更符合不考虑变质量对动量的影响,即后者。

附录 程序代码

1、2dv m

F mg kv dt

=−−情况下的拟合代码 clc;

clear;

A=load('G:/rocket.dat');

for i=1:19

t(i)=(A(1,(i+1))+A(1,i))./2;

a(i)=(A(3,(i+1))-A(3,i))./(A(1,(i+1))-A(1,i));

velocitysquare(i)=((A(2,(i+1))-A(2,i))./(A(1,(i+1))-A(1,i))).^2; F(i)=40000-9.8.*(1200-15.*t(i))-a(i).*(1200-15.*t(i)));

i=i+1; end %差分法处理数据得到加速度以及相应时刻的速度

p=polyfit(velocitysquare,F,1); %拟合曲线

plot(velocitysquare,F,'*','color','r','linewidth',2); %绘制实际测量值 hold on ;

plot(velocitysquare,p(1).*velocitysquare+p(2),'color','b','linewidth',1.2); %绘制拟合曲线

xlabel('v^2');

ylabel(' F=40000-9.8×(1200-15×t)-a×(1200-15×t) ');

text(0.5*max(100000),0.43*max(30000),sprintf('F=%5.4f v^2

+%5.4f',p));

disp(sprintf('k=%8.5f',p(1))); %输出k 值

2、2dp dm dv v m F mg kv dt dt dt

=+=−−并且k=0.33010情况下的受力微分方程求解 function dy=lalala(t,y)%微分方程函数

k=0.33010;

dy=zeros(2,1);%明确 dy 的维数,即一阶常微分方程的个数,且为列向量

dy(1)=y(2);

dy(2)=(-40000+9.8*1200-9.8*15*t+k*(y(2)^2)+15*y(2))/(15*t-1200);

clc;

clear;

tspan=[0,20];

[t,y]=ode45('lalala',tspan,[0 0]);

相关文档
最新文档