火箭发射升空——数学模型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)作图:

 

 

 主程序的完整代码:

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)')

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值