MATLAB-练习2

解析解与数值解

syms v(t) cd g m
equal = g-cd/m*v^2==diff(v,t);
condation = v(0)==0;
solve = dsolve(equal,condation);
cd0 = 0.25;g0 = 9.81;m0 =68.7;
v_t = subs(subs(subs(solve,'m',m0),'g',g0),'cd',cd0);% pretty(v_t);
ti =1;
for i = 0:20
    vt(ti) = subs(v_t,'t',i);
    ti =ti + 1;
end
vt = double(vt);
tj =0:20;
plot(tj,vt,'k-','LineWidth',2);hold on;
title('蹦级运动员速度—时间曲线');xlabel('时间t:s');ylabel('速度(m/s)');grid on;% axis equal;
plot(12,vt(13),'ro','MarkerSize',10,'MarkerFaceColor','g');text(12+0.5,vt(13)+3,num2str(vt(13)),'FontSize',14);
limit_v = double(limit(v_t,'t',inf));

有限差分-泰勒展示:

function v_t = BengJi(m,cd,st,tend)
    g=9.81;
    vbefore=0;vnext=0;
    i=1;
    for ti = 0:st:tend
    vnext=st*(g-cd/m*vbefore^2) + vbefore;
    v_t(i,1)=ti;
    v_t(i,2)=vbefore;
    vbefore=vnext;
    i = i+1;
    end
    plot(v_t(:,1),v_t(:,2),'k*','LineWidth',3);hold on;
end

>> BengJi(68.1,0.25,1,20);

>> bengjiSuDu;

>> legend('粗略解','精确解','12秒','Location','best')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值