Main Content

使用碰撞质量体计算 Pi

此示例使用一个大家熟知的物理问题,通过捕捉在一秒内发生的数万个瞬时事件来展示求解器的性能。在一维路径上,一个大质量物体朝着一个小质量物体运动,小质量物体另一侧有一堵墙。当大质量物体撞击小质量物体时,小质量物体从墙上反弹回来并改变方向朝着大质量物体运动。每次碰撞都是完全弹性的。随着大质量物体离墙越来越近,与小质量物体的碰撞也越来越频繁,直到大质量物体改变方向,最终以足够快的速度朝着反方向运动,以至于小物体永远也赶不上它。

当大质量物体的质量是小物体的 100^n 倍时,总的碰撞次数恰好为 Pi 的前 n+1 位。产生这个结果是由于能量守恒和动量守恒之间的关系。如果您在正交轴上绘制这两个物体的动能的平方根,结果点将始终落在由这两个物体的总能量确定其半径的一个圆周之上。每次碰撞都会将结果点从圆周上的一边移动到另一边的一个新点。与墙碰撞会使点垂直移动。与大质量物体碰撞会使点按等于质量比的负平方根的斜率移动。

该模型使用带有恢复系数设置的硬限位模块来表示弹性碰撞。求解器在 0.4 秒中共捕捉到了 31415 次碰撞。碰撞计数器是一个用来捕捉碰撞事件的自定义模块。

模型

来自示波器的仿真结果

来自 Simscape 记录的仿真结果

下图绘制了这两个物体的位置和速度。它显示了每次小质量物体与墙或大质量物体碰撞时的瞬时速度变化,以及当小质量物体改变大质量物体的运动方向时大质量物体的速度变化。

Simscape 记录结果的动画形式

下图显示了碰撞物体随时间推移的位置。中间的红色方块表示小质量物体,顶部的蓝色方块表示大质量物体,底部的灰色方块表示墙。