For the last couple of weeks, I have been playing with Lorenz attractors and trying to synchronize them according to a description I read in the book “Sync: The Emerging Science of Spontaneous Order” (you can see a couple of demos I created here), but now I wanted to explore a couple of variations of that description.
Here is what we need to synchronize two Lorenz attractors:
We have one “receiver” system, composed of , , and :
\[
\begin{align}
\frac{dx}{dt} &= \sigma(y - x)\\
\frac{dy}{dt} &= x(\rho - z) - y\\
\frac{dz}{dt} &= xy - \beta z
\end{align}
\]
We have one “driver” system, composed of , , and :
\[
\begin{align}
\frac{dx’}{dt} &= \sigma(y’ - x’)\\
\frac{dy’}{dt} &= x’(\rho - z’) - y’\\
\frac{dz’}{dt} &= x’y’ - \beta z’
\end{align}
\]
In the first system, we replace with . We forget about entirely:
\[
\begin{align}
\frac{dy}{dt} &= x’(\rho - z) - y\\
\frac{dz}{dt} &= x’y - \beta z
\end{align}
\]
We keep updating , , and according to the second system (the “driver”), and , and according to the equations in point 3. The first system (the “receiver”) is now composed of , , and .
I wanted to test three simple changes:
What if instead of replacing with (point 3 from the list above), we replace with a linear combination between and ? (We would first compute according to its system and then update it according to the linear combination.)
It would look something like this (this is not an extremely formal definition):
\[
\begin{align}
x_{t+1} &= \alpha\times x_{t}’ + (1-\alpha)\times x_{t}\\
& \alpha \in \mathopen[0,1\mathclose]
\end{align}
\]
The parameter will act as a “sync strength” factor. The higher, the faster the attractors synchronize. In the extremes, when , we get the base case where we simply replaced with , and when , there is no synchronization.
What if we chained multiple attractors, each of them acting as the “driver” of the next one?
It would look something like this (again, this is not an extremely formal definition):
\[
\begin{align}
\text{System 1: }& x^1, y^1, z^1\\
&\vdots\\
\text{System n: }& x^n, y^n, z^n\\
\end{align}
\]
\[
\begin{align}
x_{t+1}^{i+1} = x_{t}^{i}\\
\forall i \in \mathopen[1,n-1\mathclose]\\
\end{align}
\]
What if we combined the last two variations?
Here is a simple demo with 43 attractors that implements all the variations.
The first attractor acts as the “driver” in the “Follow chain” mode (variation 2) and as the only “driver” in the “Follow leading” mode (in this mode, all the “receivers” follow the same “driver”). With the slider, you can choose the “sync strength” (this is in variation 1). You can click anywhere in the demo to start the synchronization and click again to stop it and reset the follower attractors. The followers will light up once they are synchronized.
You can find all the code here .
You can also play with the code directly on a web editor: Sync multiple attractors.