If we have a large system of oscillators, they quite often synchronises, as the clapping of many people sometimes synchronises without any external source. Some simple examples are:

- The blinking at fireflies: Youtube video
- Pendulums on a common table: Youtube video

Following A.T. Winfree, Y. Kuramoto suggest in 1975 a simple tractable mathematical model, which already shows a remarkable rich behaviour and which has found lots of applications. For further information, see the review papers:

- Steven H. Strogatz, 2000
- Juan A. Acebrón, L. L. Bonilla, Conrad J. Pérez Vicente, Félix Ritort and Renato Spigler, 2005
- Arkady Pikovsky and Michael Rosenblum, 2015

In the model we have a finite number of oscillator (\(N\)) and each oscillator \(i=1,\dots,N\) has a natural frequency \(\omega_i\) and a phase angle \(\theta_i\).

With the coupling the evolution is now given by \[ \frac{d}{dt} \theta_i = \omega_i + \frac{K}{N} \sum_{j=1}^{N} \sin(\theta_j-\theta_i-\alpha) + \xi_i \] for \(i=1,\dots,N\), where \(K\) is the coupling constant, \(\alpha\) is the phase delay and \(\xi_i\) is standard white noise.

The noise term is only taken into account, when the checkbox is selected and can be scaled such that the standard deviation over a unit time interval is the given value.

By considering \(e^{i\theta}\) we can visualise the evolution on the unit circle which is shown in the simulation along the histogram of the phase angles.

The interaction is given through the so-called order parameter \[ r = \sum_{j=0}^{N} e^{i\theta_j}, \] which is also used to measure the degree of synchronisation.

In the plot along the circle, we also plot the order parameter. In fact in this representation, it is just the mean of all the oscillators.

The natural frequencies of each oscillator are drawn at the beginning from the chosen distribution.

The Bi-Cauchy distribution allows the mixture of two Cauchy distributions with the given mean and scale factor \(\gamma\).

In the histogram plot of the natural frequencies the two outermost bins also contain all smaller and larger, respecively, frequencies.

In order to observe the decay of a perturbation, we allow the creation of a perturbation towards a given angle with a given strength. For this we change the phase angle of every oscillator as \[ \theta \rightarrow \theta + D \sin(\beta-\theta) \] where \(D\) is the perturbation strength and \(\beta\) is the target angle.

For a general mathematical perspective, the following two review papers give a good overview:

For the Bi-Cauchy distribution, a formal calculation can be done, see the paper.

Even though there is no dissipation term, the incoherent state appears to be stable, if the coupling constant is small enough. This effect was first observed by Landau in 1946 for plasmas and works through phase mixing.

In 1992, Steven H. Strogatz, Renato E. Mirollo and Paul C. Matthews noted that the same phenomenon applies in this model.

Understanding Landau damping, is an active area of mathematical research with recent breakthroughs. In my first work, I understood the behaviour around the incoherent state showing Landau damping.

Together with Bastien Fernandez, David Gérard-Varet, we also understood Landau damping around so-called partially locked states.

With the Landau damping, we can reduce the stability to the existence of growing modes. The eigenvalue equation for the incoherent state can be expressed as \[ \mathcal{L} \hat{g}(\lambda) = \frac{2 e^{i\alpha}}{K}. \] For imposing stability we must ensure that no such solution exists for \(\Re \lambda \ge 0\).

The LHS is the image of the RHP \(\{\lambda : \Re \lambda \ge 0\}\) and thus its image can be determined by the boundary value (argument principle). This leads to the Penrose condition in the Vlasov-Poisson equation and gives a nice visual way to determine and understand the stability.

Created by Helge Dietert, 2016

This is a simple fun project to visualise the Kuramoto model. It has not been validated and can contain severe bugs. I still hope it is useful and interesting.

I am looking forward to any kind of feedback and comments! Please email me at USER@DOMAIN with USER=helge.dietert and DOMAIN=imj-prg.fr.

The page consists of hand-written HTML and Javscript code and does not run anything on a server. Hence once loaded or saved, it should work without any Internet connection. Hopefully, it works in your browser, but please note that I only tested it with a recent version of Firefox.

Feel free to look at the sources! If you find any improvements or suggestions, I would be delighted if you share them with me (e.g. how to make the control sliders nicer). For serious numerical studies, I, however, suggest that you use a proper framework with a standard ODE solver, like scipy with scipy.integrate.

I implemented a simple forward Euler scheme (mostly in order to also support noise). The implementation is not tested (even though it looks plausible) and there is no validation or adaptation of the step size.

This was only possible through using quite nice open source libraries:

- jQuery: Javascript framework (MIT License)
- Bootstrap: Layout framework (MIT License)
- Flot: Plotting library (MIT License) in addition with axis labels plugin (MIT License)
- Randgen: Creating random numbers in javascript (MIT License)
- MathJax: Displaying equations (Apache License, Version 2.0)

I have not tested all the alternatives and also the usage could probably optimised, e.g. I just redraw the whole plot every time. If you are interested, just look at the source code and I would happy to hear any comments or suggestions.

For example, there are lots of possible plotting solutions: Comparison at Wikipedia