主要内容gydF4y2Ba

使用符号数学工具箱万博1manbetx验证Simulink模型gydF4y2Ba

这个例子展示了如何建模一个弹跳的球,这是一个经典的混合动力系统。该模型包括连续动态和离散转移。它使用符号数学工具箱来帮助解释ODE求解背后的一些理论gydF4y2Ba万博1manbetxSimulink®弹跳球模型gydF4y2Ba。gydF4y2Ba

假设gydF4y2Ba

  • 球无角度地反弹gydF4y2Ba

  • 没有阻力gydF4y2Ba

  • t=0时的高度为10 mgydF4y2Ba

  • 抛出向上速度为15米/秒gydF4y2Ba

推导gydF4y2Ba

恢复系数定义为gydF4y2Ba

CgydF4y2Ba rgydF4y2Ba =gydF4y2Ba vgydF4y2Ba bgydF4y2Ba -gydF4y2Ba vgydF4y2Ba 一个gydF4y2Ba /gydF4y2Ba ugydF4y2Ba 一个gydF4y2Ba -gydF4y2Ba ugydF4y2Ba bgydF4y2Ba

其中v为物体撞击前的速度,u为物体撞击后的速度。gydF4y2Ba

我们把二阶微分方程分开gydF4y2Ba

dgydF4y2Ba 2gydF4y2Ba hgydF4y2Ba dgydF4y2Ba tgydF4y2Ba 2gydF4y2Ba =gydF4y2Ba -gydF4y2Ba ggydF4y2Ba

成gydF4y2Ba

dgydF4y2Ba hgydF4y2Ba dgydF4y2Ba tgydF4y2Ba =gydF4y2Ba vgydF4y2Ba 被离散的gydF4y2Ba hgydF4y2Ba (gydF4y2Ba tgydF4y2Ba +gydF4y2Ba δ.gydF4y2Ba tgydF4y2Ba )gydF4y2Ba -gydF4y2Ba hgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba δ.gydF4y2Ba tgydF4y2Ba =gydF4y2Ba vgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

和gydF4y2Ba

dgydF4y2Ba vgydF4y2Ba dgydF4y2Ba tgydF4y2Ba =gydF4y2Ba -gydF4y2Ba ggydF4y2Ba 被离散的gydF4y2Ba vgydF4y2Ba (gydF4y2Ba tgydF4y2Ba +gydF4y2Ba δ.gydF4y2Ba tgydF4y2Ba )gydF4y2Ba -gydF4y2Ba vgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba δ.gydF4y2Ba tgydF4y2Ba =gydF4y2Ba -gydF4y2Ba ggydF4y2Ba

我们将使用基本的一阶正欧拉数值积分法。gydF4y2Ba

hgydF4y2Ba (gydF4y2Ba tgydF4y2Ba +gydF4y2Ba δ.gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba hgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba vgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba δ.gydF4y2Ba tgydF4y2Ba

vgydF4y2Ba (gydF4y2Ba tgydF4y2Ba +gydF4y2Ba δ.gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba vgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba -gydF4y2Ba ggydF4y2Ba δ.gydF4y2Ba tgydF4y2Ba

分析解决问题gydF4y2Ba

使用符号数学工具箱,我们可以分析地解决这个问题。这让我们可以更容易地解决某些问题,比如精确地确定球第一次触地的时间。gydF4y2Ba

声明我们的符号变量。gydF4y2Ba

信谊gydF4y2BaggydF4y2BatgydF4y2BaH (t)gydF4y2Bah_0gydF4y2Bav_0gydF4y2Ba

分开二阶微分方程gydF4y2Ba dgydF4y2Ba 2gydF4y2Ba hgydF4y2Ba dgydF4y2Ba tgydF4y2Ba 2gydF4y2Ba =gydF4y2Ba -gydF4y2Ba ggydF4y2Ba 成gydF4y2Ba dgydF4y2Ba hgydF4y2Ba dgydF4y2Ba tgydF4y2Ba =gydF4y2Ba vgydF4y2Ba 和gydF4y2Ba dgydF4y2Ba vgydF4y2Ba dgydF4y2Ba tgydF4y2Ba =gydF4y2Ba -gydF4y2Ba ggydF4y2Ba 。gydF4y2Ba

Dh = diff (H);diff(H, 2) == ggydF4y2Ba
d2h(t)=gydF4y2Ba

∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba HgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba ggydF4y2Ba diff(H(t), t, 2) == ggydF4y2Ba

用下面的方法解决ODEgydF4y2BaDsolve.gydF4y2Ba:gydF4y2Ba

eqn = dsolve(D2h, H(0) == h_0, Dh(0) == v_0)gydF4y2Ba
eqn =gydF4y2Ba

ggydF4y2Ba tgydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba vgydF4y2Ba 0gydF4y2Ba tgydF4y2Ba +gydF4y2Ba hgydF4y2Ba 0gydF4y2Ba (g*t²)/2 + v0 *t + h0gydF4y2Ba

参数探索使用运动的抛物线轮廓gydF4y2Ba潜艇gydF4y2Ba:gydF4y2Ba

EQN = SUMM(EQN,[H_0,V_0,G],[10,15,-9.81])gydF4y2Ba
eqn =gydF4y2Ba

-gydF4y2Ba 981gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba 200.gydF4y2Ba +gydF4y2Ba 15gydF4y2Ba tgydF4y2Ba +gydF4y2Ba 10gydF4y2Ba - (981*t²)/200 + 15*t + 10gydF4y2Ba

通过解决零,找到球击中地面的时间:gydF4y2Ba

假设(t> 0)thit =求解(eqn == 0)gydF4y2Ba
,越南=gydF4y2Ba

20.gydF4y2Ba 5gydF4y2Ba 26gydF4y2Ba 109.gydF4y2Ba +gydF4y2Ba 500gydF4y2Ba 327.gydF4y2Ba (20 * sqrt(信谊(5))* sqrt(信谊(26)))/ 109 +符号(500/327)gydF4y2Ba

可视化解决方案gydF4y2Ba

fplot(eqn,[0 10]) ylim([0 25])gydF4y2Ba

图中包含一个轴。坐标轴包含一个functionline类型的对象。gydF4y2Ba

使用可变精度算术格式化确切的结果gydF4y2BavpagydF4y2Ba:gydF4y2Ba

disp ([gydF4y2Ba“球的初始高度为10米,速度为15米/秒,将以15米/秒的速度撞击地面。”gydF4y2Bachar (vpa(,越南,4))gydF4y2Ba“秒”。gydF4y2Ba])gydF4y2Ba
球的初始高度为10m,速度为15m/s,将在3.621秒时撞击地面。gydF4y2Ba

用数值解这个问题gydF4y2Ba

设置模拟参数gydF4y2Ba

球gydF4y2Ba

c_bounce =。9;gydF4y2Ba%弹跳恢复系数;完全恢复是1gydF4y2Ba

模拟的性质gydF4y2Ba

重力= 9.8;gydF4y2Ba%重力的加速度(m / s)gydF4y2Baheight_0 = 10;gydF4y2Ba% t=0时的初始高度(m)gydF4y2BaVelocity_0 = 15;gydF4y2Bat=0时的初速度% (m/s)gydF4y2Ba

声明模拟时间步长gydF4y2Ba

dt = 0.05;gydF4y2Ba%动画时间gydF4y2Bat_final = 25;gydF4y2Ba%模拟时段(s)gydF4y2Bat = 0: dt: t_final;gydF4y2Ba%时间间隔gydF4y2BaN =长度(t);gydF4y2Ba迭代次数%gydF4y2Ba

初始化模拟量gydF4y2Ba

h = [];gydF4y2Ba球高与时间的关系% (m)gydF4y2Bav = [];gydF4y2Ba%球的速度(m/s)与时间(m/s)的函数gydF4y2Bah (1) = height_0;v (1) = velocity_0;gydF4y2Ba

模拟弹跳球(我们将使用基本的一阶正欧拉数值积分):gydF4y2Ba

为gydF4y2Bai = 1: n - 1 v (i + 1) =(我)重力* dt;h (i + 1) = h (i) + v (i) * dt;gydF4y2Ba%当球弹起时(高度小于0),gydF4y2Ba%反转速度并重新计算位置。gydF4y2Ba%使用恢复系数gydF4y2Ba如果gydF4y2Bah(i + 1)<0 V(i)=  -  v(i)* c_bounce;v(i + 1)= v(i)-gravity * dt;h(i + 1)= 0 + v(i)* dt;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

对仿真结果进行可视化验证gydF4y2Ba

情节(t,h,gydF4y2Ba'o'gydF4y2Ba) 抓住gydF4y2Ba上gydF4y2Bafplot (eqn 10[0])标题(gydF4y2Ba高度随时间的gydF4y2Ba) ylim([0 25])持有gydF4y2Ba离开gydF4y2Ba

图中包含一个轴。带有随时间推移标题高度的轴包含两个类型为line和functionline的对象。gydF4y2Ba

情节(t, v)标题(gydF4y2Ba速度随着时间的gydF4y2Ba)gydF4y2Ba

图中包含一个轴。带有标题速度随时间变化的轴包含一个类型为line的对象。gydF4y2Ba

使用Analytics验证数字gydF4y2Ba

将您的分析结果与数字结果进行比较。gydF4y2Ba

作为一个提醒,撞击的时间是:gydF4y2Ba

disp ([gydF4y2Ba“球的初始高度为10米,速度为15米/秒,将以15米/秒的速度撞击地面。”gydF4y2Bachar (vpa(,越南,4))gydF4y2Ba“秒”。gydF4y2Ba])gydF4y2Ba
球的初始高度为10m,速度为15m/s,将在3.621秒时撞击地面。gydF4y2Ba

从数值模拟中我们可以找到在模拟时最接近的数值gydF4y2Ba hgydF4y2Ba (gydF4y2Ba tgydF4y2Ba 我gydF4y2Ba )gydF4y2Ba ≈gydF4y2Ba 0gydF4y2Ba

我= CEIL(DOUBLE(THIT / DT));T([I-1 I I + 1])gydF4y2Ba
ans =gydF4y2Ba1×3gydF4y2Ba3.5500 3.6000 3.6500.gydF4y2Ba
情节(t,h,gydF4y2Ba'o'gydF4y2Ba) 抓住gydF4y2Ba上gydF4y2Bafplot (eqn 10[0])情节(t([张我+ 1]),h([张我+ 1]),gydF4y2Ba“* R”gydF4y2Ba) 标题(gydF4y2Ba高度随时间的gydF4y2Ba) xlim([0 5]) ylim([0 25]) holdgydF4y2Ba离开gydF4y2Ba

图中包含一个轴。随着时间推移,带有标题高度的轴包含三个类型为line、functionline的对象。gydF4y2Ba