Belousov-Zhabotinsky reaction

Belousov-Zhabotinsky reaction [1] is a chemical reaction, or more precisely a reaction family, known for exhibiting temporal and spatial oscillations.

This reaction is one of the classical examples of the natural non-linear oscillations. Another prominent example is the previously analyzed prey-predator interactions in the ecosystem. Interestingly enough despite being of a very different nature both of these example can be modeled using Lotka-Volterra equations.

In this text we will also consider certai cellular automaton, which replicates the spatial oscillations seen in some of the Belousov-Zhabotinsky reactions.

Belousov-Zhabotinsky reaction and Lotka-Volterra equations

In the most simplest and general case Belousov-Zhabotinsky reaction can be described by the following chain of chemical reactions:

\begin{equation} A_1 + X_1 \rightarrow 2 X_1 + A_2, \end{equation}

\begin{equation} X_1 + X_2 \rightarrow 2 X_2 + A_3, \end{equation}

\begin{equation} X_2 \rightarrow A_4 , \end{equation}

here \( X_i \) are the main chemical ingredients, while \( A_i \) are secondary chemical ingredients (which are needed for reactions to occur, or which are the product of these reactions).

From the above should be evident that \( X_1 \) concentration increases proportionally to \( k_1 C_{a1} C_{x1} \) (the first reaction in the chain) and decreases proportionally to \( k_2C_{x1} C_{x2} \) (the second reaction in the chain). Mathematically this can be written as ordinary differential equation:

\begin{equation} \mathrm{d} C_{x1} = \left[ k_1 C_{a1} C_{x1} - k_2C_{x1} C_{x2} \right] \mathrm{d} t. \end{equation}

Here we use \( C_i \) for concentrations, where \( i \) is the index of ingredient (ex., "x1" stands for \( X_1 \)). The rates of reaction is denoted as \( k_i \), where \( i \) is a number of reaction in the chain.

The second reaction increases \( X_2 \) concentration proportionally to \( k_2 C_{x1} C_{x2} \). The concentration of \( X_2 \) decreases due to the third reaction and proportionally to \( k_3 C_{x2} \). Mathematically this can be expressed as:

\begin{equation} \mathrm{d} C_{x2} = \left[ k_2 C_{x1} C_{x2} - k_3C_{x2} \right] \mathrm{d} t. \end{equation}

Now compare these two ordinary differential equation and Lotka-Volterra equations! The \( C_{a1} \) can be assumed to be a constant model parameter for the sake of comparison.

Cellular automaton

The cellular automaton model for the Belousov-Zhabotinsky reaction was proposed by A. K. Dewdney in [2]. The rules were set as follows:

  • If the cell is in state 1, then it changes its state to the \( [a / k_1]+[ b / k_2 ]+1 \) state, where \( a \) is a number of cells in the intermediate states (namely larger than 1 and smaller than 255), while \( b \) is a number of cells in the 255 state. \( k_1 \) and \( k_2 \) are the model parameters, which should be in the range from 1 to 8. The square brackets extracts integer from a real number (t.y. \( [2.5]=2 \)).
  • If the cell is in state 255, then it changes its state to 1.
  • The cells in the intermediate states (namely larger than 1 and smaller than 255), switch to \( [ S / (a+b+1) ]+g \), where \( a \) and \( b \) are the same as before, while \( S \) are the sum of the states of the nearest 8 neighbors. \( g \) is a parameter set by user, it should be integer number larger than 1, but smaller than 255.

These rules should be applied synchronously to all cells in the grid.

Browser applet

Note that not all parameter sets provide "good" results (the ones reminiscent to the those seen in YouTube video). Also note that the grid is torus.


  • A. M. Zhabotinsky. Belousov-Zhabotinsky reaction. Scholarpedia 2: 1435 (2007). doi: 10.4249/scholarpedia.1435.
  • A. K. Dewdney. The hodge-podge machine makes waves. Scientific American, August 1988: 104-107.