数学实验第二次作业任务常微分方程数值求解

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

实验4常微分方程数值解

实验目的:

1.练习数值积分的计算;

2.掌握用MATLAB软件求微分方程初值问题数值解的方法;

3.通过实例学习用微分方程模型解决简化的实际问题;

4.了解欧拉方法和龙格——库塔方法的基本思想和计算公式,及稳定性等概念。

实验内容:

3.小型火箭初始质量为1400kg,其中包括1080kg燃料,火箭竖直向上发射是燃料燃烧率为18kg/s,由此产生32000N的推力,火箭引擎在燃料用尽时关闭。设火箭上升是空气阻力正比于速度的平方,比例系数为0.4kg/m,求引擎关闭瞬间火箭的高度,速度,加速度,及火箭到达最高点是的高度,速度和加速度,并画出高度,速度,加速度随时间变化的图形。

解答如下:

这是一个典型的牛顿第二定律问题,分析火箭受力情况;

先规定向上受力为正数

建立数学模型:

A燃料未燃尽前,在任意时刻(t<60s)

火箭受到向上的-F=32000N,

向下的重力G=mg,g=9.8,

向下的阻力f=kv^2, k=0.4, v表示此时火箭速度;

此时火箭收到的合力为F1=(F-mg-f);

火箭的初始质量为1400kg,燃料燃烧率为-18kg/s;

此刻火箭质量为m=1400-18*t

根据牛顿第二定律知,加速度a=F1/m=(F-mg-f)/(m-r*t)=

(32000-(0.4.*v.^2)-9.8.*(1400-18.*t))

由此可利用龙格-库塔方法来实现,程序实现如下

Function [dx]=rocket[t,x] %建立名为rocket的方程

m=1400;k=0.4;r=-18;g=9.8; %给出题目提供的常数值dx=[x(2);(32000-(k*x(2)^2)-g*(m+r*t))/(m+r*t)];

%以向量的形式建立方程[a]=(32000-(k*x(2)^2)-g*(m+r*t))/(m+r*t); %给出a的表达式

End;

ts=0:60; %根据题目给定燃烧率计算出燃料燃尽的时间,确定终点

x0=[0,0]; %输入x的初始值[t,x]=ode15s(@rocket,ts,x0); %调用ode15s计算

[t,x];

h=x(:,1);

v=x(:,2);

plot(t,x(:,1)),grid; %绘出火箭高度与时间的关系曲线

title('h-t');

xlabel('t/s');ylabel('h/m'),pause;

plot(t,x(:,2)),grid ; %绘出火箭速度与时间的曲线关系

title('v-t');

xlabel('t/s');ylabel('v/m/s'),pause;

a=(32000-(0.4.*v.^2)-9.8.*(1400-18.*t))/(1400-18.*t);

plot(t,a),grid; %绘出火箭加速度与时间的曲线关系title('a-t');

xlabel('t/s'),ylabel('a/m^2/s'),pause

火箭高度随时间变化的曲线

火箭速度随时间变化的曲线

火箭加速度随时间变化的曲线

数据过多,故截取部分如下

第一列为时间,第二列为火箭高度,第三列为火箭速度

由此可以,在t=60s时,即火箭燃料燃尽瞬间,引擎关闭瞬间,火箭将到达12912m的高度,速度为267,29m,加速度a=0.9m/s^2

B燃料燃尽之后,与A 类似,分析受力如下

火箭受到向上的F=0

向下的重力G=mg,g=9.8,

向下的阻力f=kv^2, k=0.4, v表示此时火箭速度;

此时火箭收到的合力为F2=(-mg-f);

火箭的初始质量为320kg,恒定

根据牛顿第二定律,加速度a=F2/m=-g-0.4v^2/320;

程序实现如下

function [ dx ] = rocket2( t,x ) %建立以rocket2为名的函数

dx=[x(2);-9.8-0.4.*x(2).^2/320]; %以向量的形式建立方程

ts=60:120; %给出初始时刻,估计终点时刻

x0=[12190,267.26]; %给出x初始值[t,x]=ode15s(@rocket2,ts,x0); %调用ode15s计算[t,x]

plot(t,x(:,1)),grid; %绘出火箭高度随时间变化的曲线title('h-t');

xlabel('t/s'),ylabel('h/m'),pause;

plot(t,x(:,2)),grid; %绘出火箭速度随时间的变化曲线title('v-t');

xlabel('t/s'),ylabel('v/m/s'),pause;

v=x(:,2);

a=-9.8-0.4*v.^2/320; %给出加速度的具体表达式plot(t,a),grid; %绘出火箭加速度随时间变化的曲线title('a-t');

xlabel('t/s'),ylabel('a/m^2/s'),pause

得到的曲线图形如下

火箭高度随时间的变化曲线

从图中可以大致看出,最高点在13km左右,火箭速度随时间的变化曲线

加速度随时间变化曲线如下

数据表格大致如下

从图表中可以看出,在71s左右速度到达0,即此时到达最高处,高度为13117m加速度为

-9.8m/m/s^2;

本题总结:

这道题是典型的物理牛顿力学的题目,通过受力的正确分析,可以知道,以[h,v]为向量建立微分方程即可求解,h的微分是速度v,速度v的微分是加速度a

解题过程中存在的难点是:取值步长不太容易确定,而且是哪种算法不确定,先用ode15s

相关文档
最新文档