Yesterday a tweep of mine posted this
and it got me thinking. First, here’s the youtube he’s refering to:
I wanted to see if I could model it in Mathematica. As usual, my first attempt didn’t quite get it right. But, eventually, I got it figured out. For those of you who just want to see the animation:
Ok, so how’d I do it? First I tried just coupling several pendula to a common base. I was able to determine the equations of motion quite quickly using the Lagrangian formalism and Mathematica’s excellent ability to abstract things. There’s a screenshot below showing what I mean about that. I was able to make a few animations using varying values for the friction, etc, but I never really got the synchronization I was looking for.
Here’s what I was thinking: every system has a set of normal modes where every dynamic variable oscillates with the same frequency. I figured that each mode would have a different average speed of the particles and so the slowest ones would last the longest in the presence of friction. I still think that’s true, but the problem is that you’ll only see the synchronization at very small amplitudes. It didn’t seem like that’s what was going on in the original movie, so I thought I’d do a little digging.
It turns out that there’s a nice publication in the American Journal of Physics all about this that came out in 2002. In there, I learned how to model metronomes, as it turns out assuming they’re just simple pendulums (ok, grammar nazis: pendula), but rather, they’re pendula with an added van der Pol term that tries to keep them at a fixed amplitude. Basically, there’s a term that augments the friction term so that when the angle is less than your target amplitude, it adds energy to the system, and when it’s larger than your target amplitude, it takes energy out of the system.
So, by simply changing one line in my code, I was able to see the synchronization. Pretty cool!
Here’s the screenshot: