主要内容

模拟弹跳球

这个例子展示了如何使用Simulink®建模弹跳球的两种不同方法。金宝app

概述

图1:一个球以15米/秒的速度从10米的高度向上抛起。

弹跳球模型是一个经典的例子混合动力系统.混合动态系统是一个系统,它既包括连续动态,也包括离散过渡,其中系统动态可以改变,状态值可以跳跃。弹跳球的连续动力学可以简单地表示为:

$$
\frac{d v}{d t} = -g,

$$
\frac{d x}{d t} = v,

在哪里g美元是重力引起的加速度,美元$ x (t)球的位置和v (t)美元是速度。因此,系统有两个连续状态:位置x美元和速度五美元

该模型的混合系统方面源于对球与地面碰撞的建模。如果假设与地面发生部分弹性碰撞,那么碰撞前的速度,v ^ -美元,碰撞后的速度,v ^ + $美元,可由球的恢复系数关系式,\ kappa美元,详情如下:

v^+ = -\kappa v^-, \qquad x = 0
$$

因此,在过渡条件下,弹跳球在连续状态(速度)下显示跳跃,$ x = 0美元

弹跳的球是最简单的模型之一芝诺的现象.芝诺行为被非正式地描述为在有限时间间隔内发生的无限数量的事件。在弹跳球模型中,由于球的能量损失,大量的与地面的碰撞开始在连续较短的时间间隔内发生。因此模型经历了芝诺行为。模型与芝诺的行为本质上很难在计算机上模拟,但在许多常见和重要的工程应用中会遇到。

用两个积分器块模拟一个弹跳球

打开这个模型

您可以使用两个积分器块来模拟一个弹跳的球。左边的积分器是对第一个方程建模的速度积分器右边的积分器是位置积分器。导航到位置积分器块对话框,并观察到它的下限为零。这个条件代表了球不能飞到地面以下的约束。

利用位置积分器的状态端口和相应的比较结果,检测球落地时间,复位两个积分器。速度积分器的状态端口用于计算v ^ + $美元

要观察系统的Zeno行为,请导航到“配置参数”对话框的“求解器”窗格。在“过零选项”部分,确认“算法”设置为“非自适应”,并且模拟“停止时间”设置为25秒。运行模拟。

观察模拟误差随着球撞击地面的频率和能量的损失而增加。因此,模拟超过了允许的“连续零交叉次数”的默认限制1000。现在导航到Configuration Parameters对话框。在“过零选项”部分,将“算法”设置为“自适应”。该算法引入了一种复杂的处理这种抖振行为。因此,您现在可以模拟超过20秒的系统。然而,请注意,在21秒到25秒之间的状态颤振,以及在20秒左右,Simulink对模型中强烈颤振的警告。金宝app

用二阶积分块模拟弹跳球

打开这个模型

您可以使用单个二阶积分器块来建模这个系统。第二个方程dx / dt = v $美元在本例中是二阶积分器块的内部。导航到二阶积分器块对话框,并注意到,与前面一样,x美元具有0的下限。导航到块对话框上的Attributes选项卡,注意选中了“当x达到饱和时重新初始化dx/dt”选项。这个参数允许我们重新初始化dx / dt。美元五美元在弹跳球模型中)到一个新的值x美元达到饱和极限。因此,对于弹跳球模型,这个选项意味着当球撞击地面时,它的速度可以设置为不同的值,即撞击后的速度。注意计算与地面碰撞后速度的循环。为了捕捉速度v ^ -美元就在碰撞之前,那个球dx / dt。美元使用二阶积分器块的输出端口和内存块。v ^ -美元然后用来计算反弹速度v ^ + $美元

导航到“配置参数”对话框的“求解器”窗格。在“过零选项”部分确认“算法”设置为“非自适应”,并且模拟“停止时间”设置为25秒。模拟模型。注意,模拟没有遇到任何问题。在t = 20秒后,您能够模拟模型而不经历过度的颤振,并且无需将“算法”设置为“自适应”。

二阶积分器模型是模拟弹球的较好方法

人们可以分析计算出确切的时间$ t ^ * $当球以零速度落在地面上时,通过计算每次反弹所需的时间。这个时间是一个无限几何级数的和,由:

$ $ & # xA; t ^ * = \压裂{1}{g} \离开(v_0 + v_1 \左(\压裂{1 + \ kappa} {1 - \ kappa} \) \右),\ qquad v_1 = \√6 {v_0 ^ 2 + 2 gx_0}强生# xA; $ $

在这里从美元而且v_0美元分别是位置和速度的初始条件。速度和球的位置必须相等为零t ^ * $ $ t # 62;.在下面的图中,两个模拟的结果被绘制在附近$ t ^ * $.图中垂直的红线是$ t ^ * $对于给定的模型参数。为$ t < t ^ * $远离$ t ^ * $,两种模型得出的结果准确且相同。因此,在图中只能看到来自第二个模型的一条洋红色线。然而,第一个模型的模拟结果并不准确$ t ^ * $;它继续显示过度的喋喋不休的行为t ^ * $ $ t # 62;.相比之下,使用二阶积分器块的第二个模型正好为零$ t & # 62;t ^ * $

图2:两种方法的仿真结果比较。

图2最终表明,与第一种模型相比,第二种模型具有更好的数值特征。二阶积分器模型精度较高的原因如下。二阶微分方程dx / dt = v $美元是二阶积分器块的内部。因此,块算法可以利用这两种状态之间的已知关系,并部署启发式来压制某些条件下不希望出现的抖振行为。当两种状态由于集成错误和抖振行为而不再相互一致时,这些启发式就会变得活跃。因此,您可以使用系统的物理知识来缓解某些类型的Zeno模型的模拟陷入Zeno状态的问题。