我有一个交付学校的项目。 该项目是基于随机运动的系统,我和我的伙伴选择研究双摆集(运动不是随机的,而是混乱的)。 我们的研究问题想要调查系统是否可以在任何点上达到周期性运动状态以及这将发生多长时间。 我的问题是我们如何在模型中检测到填充了2个值对的数组中的圆周运动。 阵列将像这样 - (theta1,theta2)填充2个摆杆的2个角度。 其余的变量,例如摆杆的长度或2个质量是已知的,因此从这些角度我们可以计算出系统其余部分的状态。 每个数组元素都是根据移动时间添加的,每个数组元素之间的时间差为0.05秒,因此每个数组元素的时间可以计算为n * 0.05。
我们可以轻松地从我们使用EJS开发的双摆模型中导出数据对数组,并使用用python或其他东西编写的脚本对其进行分析,只是我们不知道解决这个问题的最佳方法是什么。 希望解释清楚,谢谢你的帮助! :)
答案 0 :(得分:2)
编辑: OP澄清了问题并声明他正在搜索定期移动,而不是m1
或m2
翻转。
下面的方法是指双摆的两个质量之一的翻转检测。
检测摆锤翻转的时间点(或模拟时间片)取决于您如何定义实际的翻转。让钟摆的中心位于(0, 0)
。
请注意,这只是一个粗略的想法,可以作为更准确的翻转检测计算的起点。
如果x
坐标在其y
坐标为正时改变其符号,则可以认为单摆是翻转的。这是因为我们知道,一旦它越过天顶,它将继续向同一方向移动。
flip 的定义并不像双摆的情况那么简单。
正如OP可能知道的那样,双摆具有混沌运动并且只能在数字上解决。即,它的轨迹无法预测。
(图片来自维基百科的100Miezekatzen,根据知识共享许可)
对于m1
翻转的情况,大致相同的情况与单摆的情况相同。然而,在越过天顶之后,m1
仍然可以在某些条件下被m2
的力强制反转其(角度)运动方向。因此,仅检查x
坐标是否改变其符号是不够的。相反,我们必须检查更长的观察序列(从模拟期间)并确保方向(即theta1
不断减少或增加)在该期间保持不变。根据设置中的质量和长度,我们可以确定地计算theta1
的实际间隔,它仍然可以强制在正y
处重新穿过天顶,但它可能足以搜索对于所有这些都持有的序列:
m1
已将大约pi/2
(四分之一圆)的角距离覆盖到同一方向y
的{{1}}坐标在整个序列中是正的m1
x
坐标的符号在序列的中心只改变一次对于m1
翻转的情况,我们必须定义在应该找到序列期间必须保持的类似条件,但始终与m2
相关。让我快速猜一下:
m1
是积极的m2.y - m1.y
仅对整个序列增加或减少(移动方向相对于theta2 - theta1
不变)m1
在此序列中只更改一次符号(m2.x - m1.x
越过m2
上的天顶