弹球模拟
本示例使用两个弹跳球Simulink®模型来展示用Zeno行为建模混合动金宝app态系统的不同方法。该示例还提供了每种方法的好处。
弹球模型是具有芝诺现象的混合动力系统。芝诺行为被非正式地描述为在有限时间间隔内发生的无限数量的事件。当球失去能量时,大量的与地面的碰撞开始在连续较短的时间间隔内发生。
混合动力系统
弹跳球模型是混合动力系统的一个例子。混合动态系统是一种同时包含连续动态和离散过渡的系统,其中系统动态可以改变,状态值可以跳跃。弹跳球的连续动力学由下列方程给出:
在哪里是重力引起的加速度,是球的位置,和是速度。因此,系统有两个连续状态:位置和速度.
该模型的混合系统方面源于对球与地面碰撞的建模。如果假设与地面发生部分弹性碰撞,那么碰撞前的速度,,碰撞后的速度,,可由球的恢复系数关系式,,详情如下:
因此,在过渡条件下,弹跳球在连续状态(速度)下显示跳跃,.该图显示了一个球从25米的高度以0米/秒的速度抛出。
用两个积分器块来模拟弹跳球
的sldemo_bounce_two_integrators
模型使用两个积分器块来模拟一个弹跳的球。左边的积分器块是对第一个方程建模的速度积分器。右边的积分器块是位置积分器。打开位置积分器块对话框,观察到该块的下限为零。这个条件代表了球不能飞到地面以下的约束。
利用位置积分器的状态端口和相应的比较结果,检测球落地时间,复位两个积分器。速度积分器的状态端口用于计算.
要观察系统的Zeno行为,请转到解算器窗格中的“配置参数”对话框。在“模拟时间”中设置“停止时间”为“25”。
在仿真时间,设置停止时间来
25
.扩大解决细节问题,在
Zero-corssing选项
,设置算法来非适应
.
模拟模型。
当球更频繁地撞击地面并损失能量时,模拟结果超过了连续过零的次数默认限制1000
.
在“配置参数”对话框中,转到解算器>零交点选项.集算法来自适应
.该算法对抖振行为提出了一种复杂的处理方法。现在可以模拟超过20秒的系统。然而,请注意,在21秒到25秒之间的状态颤振,以及在20秒左右,Simulink对模型中强烈颤振的警告。金宝app
用二阶积分块建立弹球模型
的sldemo_bounce
模型使用一个二阶积分器块来模拟一个弹跳的球。在这种情况下,第二个方程在本例中是二阶积分器块的内部。打开二阶积分器块对话框,看看具有0的下限。在属性选项卡,检查当x达到饱和时重新初始化dx/dt
.此参数允许您重新初始化(在弹跳球模型)到一个新的值时达到饱和极限。所以,在弹跳球模型中,当球撞击地面时,它的速度可以设置为不同的值,比如撞击后的速度。注意计算与地面碰撞后速度的循环。为了捕捉速度就在碰撞之前,那个球使用二阶积分器块的输出端口和内存块。然后用来计算反弹速度.
2 .在“配置参数”对话框中,进入解算器窗格。
在仿真时间,设置停止时间来
25
.扩大解算器的细节.在零交点选项,设置算法来
非适应
.
模拟模型。
注意,模拟没有遇到任何问题。您可以模拟模型,而不会在20秒后出现过多的颤振,并且无需设置算法来自适应
.
比较弹跳球建模的方法
你可以分析计算出准确的时间当球以零速度落在地面上时,通过计算每次反弹所需的时间。这个时间是一个无限几何级数的和,由:
在哪里而且分别是位置和速度的初始条件。速度和球的位置必须相等为零.图中显示了附近两个模拟的结果.图中垂直的红线是对于给定的模型参数。为远离,两种模型得出的结果准确且相同。在图中只能看到来自第二个模型的一条洋红色线。然而,第一个模型的模拟结果并不准确.剧情继续表现出过度喋喋不休的行为.相比之下,使用二阶积分器块的模型则精确地为零.
由于二阶微分方程,使用二阶积分器块的模型与第一个模型相比具有更好的数值特性是二阶积分器块的内部。块算法可以利用两种状态之间的这种关系,并使用启发式来压制特定条件下的抖振行为。当两种状态由于集成错误和抖振行为而不再相互一致时,这些启发式就会变得活跃。因此,对于某些类型的Zeno模型,您可以使用系统的物理知识来防止模拟陷入Zeno状态。