火箭发射升空——数学模型P163 5.6

考虑空气阻力的模型求解:

主要需求解方程9,10,两个方程均无法解析地求解,转而求数值解代替。

可以运用matlab ode45函数求数值解。

求解方程9:

%求解方程9 燃料还没烧完时
tspan1=[0 60];%求解区间
y01=[0 0];%初值
[t1,x1]=ode45('odefun',tspan1,y01);
xt1=x1(:,1);%燃料没烧完时火箭高度
vt1=x1(:,2);%燃料没烧完时火箭速度

函数odefun.m 

function dx=odefun(t,x)
dx=zeros(2,1);%初始化dx
dx(1)=x(2);
dx(2)=(27000-0.3*x(2)^2)/(1600-18*t)-9.8;

求解方程10:

%求解方程10 燃料烧完了
tspan2=[60 76];%求解区间——这里火箭到达最高点的时间(参数2)可以先随意代入,
               %而后求出火箭高度x2最大时,t2对应的时间,再反过来代入求解区间
y02=[10546 266];%初值
[t2,x2]=ode45('odefun2',tspan2,y02);
xt2=x2(:,1);%燃料烧完时火箭高度
vt2=x2(:,2);%燃料烧完时火箭速度

函数odefun2.m 

function dx=odefun2(t,x)
dx=zeros(2,1);%初始化dx
dx(1)=x(2);
dx(2)=-0.3*dx(1)^2/520-9.8;

将求出的火箭高度x(t),速度v(t)代入方程9、10,可以得到火箭加速度a(t).

最后对考虑空气阻力时火箭上升高度x(t)、速度v(t)和加速度a(t)作图:

 火箭发射升空——数学模型P163 5.6_第1张图片

火箭发射升空——数学模型P163 5.6_第2张图片

火箭发射升空——数学模型P163 5.6_第3张图片 

 主程序的完整代码:

clc,clear
%求解方程9 燃料还没烧完时
tspan1=[0 60];%求解区间
y01=[0 0];%初值
[t1,x1]=ode45('odefun',tspan1,y01);
xt1=x1(:,1);%燃料没烧完时火箭高度
vt1=x1(:,2);%燃料没烧完时火箭速度

%求解方程10 燃料烧完了
tspan2=[60 76];%求解区间——这里火箭到达最高点的时间(参数2)可以先随意代入,
               %而后求出火箭高度x2最大时,t2对应的时间,再反过来代入求解区间
y02=[10546 266];%初值
[t2,x2]=ode45('odefun2',tspan2,y02);
xt2=x2(:,1);%燃料烧完时火箭高度
vt2=x2(:,2);%燃料烧完时火箭速度
%作图
figure(1) %火箭高度
plot(t1,xt1,t2,xt2)
xlabel('t');ylabel('x(t)')
figure(2) %火箭速度
plot(t1,vt1,t2,vt2)
xlabel('t');ylabel('v(t)')
figure(3) %火箭加速度
a1=(27000-0.3*vt1.^2)./(1600-0.3*t1)-9.8;%燃料没烧完时火箭加速度
a2=-0.3*vt2.^2/520-9.8;%燃料烧完时火箭加速度
a=[a1',a2'];
t=[t1',t2'];
plot(t,a)
xlabel('t');ylabel('a(t)')

你可能感兴趣的:(数学建模,matlab,线性代数,几何学,矩阵,数学建模,matlab)