Learning Scientific Programming with Python (2nd edition)
P8.2.4: The Brusselator
Question P8.2.4
The Brusselator is a theoretical model for an autocatalytic reaction. It assumes the following reaction sequence, in which species A and B are taken to be in excess with constant concentration and species D and E are removed as they are produced. The concentrations of species X and Y can show oscillatory behaviour under certain conditions. $$ \begin{align*} \mathrm{A} & \rightarrow \mathrm{X} & \quad k_1\\ 2\mathrm{X} + \mathrm{Y} & \rightarrow 3\mathrm{X} & \quad k_2\\ \mathrm{B} + \mathrm{X} & \rightarrow \mathrm{Y} + \mathrm{D} & \quad k_3\\ \mathrm{X} & \rightarrow \mathrm{E} & \quad k_4 \end{align*} $$ It is convenient to introduce the scaled quantities $$ \begin{align*} x = [\mathrm{X}]\sqrt{\frac{k_2}{k_4}}, & \quad y = [\mathrm{Y}]\sqrt{\frac{k_2}{k_4}},\\ a = [\mathrm{A}]\frac{k_1}{k_4}\sqrt{\frac{k_2}{k_4}}, & \quad b = [\mathrm{B}]\frac{k_3}{k_4}, \end{align*} $$ and to scale the time by the factor $k_4$, which gives rise to the dimensionless equations $$ \begin{align*} \frac{\mathrm{d}x}{\mathrm{d}t} &= a - (1+b)x + x^2y,\\ \frac{\mathrm{d}y}{\mathrm{d}t} &= bx - x^2y. \end{align*} $$ Starting with $x(0) = y(0) = 1$, show how these equations predict $x$ and $y$ to vary for (a) $a = 1, b = 1.8$ and (b) $a = 1, b = 2.02$ by plotting in each case (i) $x,y$ as functions of (dimensionless) time and (ii) $y$ as a function of $x$.