I do not have the perfect solution, but I want to add little something in the challenge. Simulating that kind of coupled non-linear system seems to be tricky in Simulink®.
At first I thought this challenge was going to be easy, I assembled a SimMechanics model, clicked play… but the pendulums are not synchronizing, as mentioned by Parasar in his post.
Then I thought, let’s try with Simulink®. I implemented the equations provided and then face two choices:
- By default, the coupling of the equations results in an algebraic loop. I try to let the algebraic loop solver resolving the algebraic loop, and the results are similar to the ones from SiMemchanics™. It looks like the Simulink® algebraic loop solver is doing a job similar to the SimMechanics™ solver. I cannot explain the exact reason, my guess is that the algebraic loop solver removes the non-linearity that makes the pendulums synchronize in real life.
- My standard way to remove algebraic loops is to introduce a delay in the feedback path. In that case, the pendulums synchronize but the model becomes instable. The maximum sample time of the Simulink® solver must be adjusted to an appropriate value to obtain an acceptable tradeoff between synchronization and stability.
I implemented the model using a vector approach. It allows easily changing the number of pendulums and modifying the algorithm.
From what I understand, the pendulum equations are non-linear and it should not be required to add any nonlinear limits, like bump stops in a metronome.
I hope Seth will provide explanations on why no one has been able to obtain the synchronization using SimMechanics™.
Guy Rouleau (2020). Synchronizing metronomes (https://www.mathworks.com/matlabcentral/fileexchange/21748-synchronizing-metronomes), MATLAB Central File Exchange. Retrieved .
Minor modifs for BSD licences