Growing Oscillations Four linearized species deviations over 700 model time units. The oscillations double their amplitude about every 346.6 units. Growing oscillations · growth rate 0.0020 Deviation from Equilibrium (scaled) -12-8-404812 X0X1X2X3 0100200300400500600700 Model Time

Growing oscillations · growth rate 0.0020

111.182

The Reaction Network

The four species and five reactions form a stoichiometric matrix SS. Rows represent species; columns represent reactions. Each entry gives the net change per reaction: negative means consumed, positive means produced.

r0:X0+2X34X2r1:4X1+2X2r2:4X22X3r3:2X3X0+6X1+X2r4:2X2+2X3\begin{aligned} r_0:&\quad X_0+2X_3\longrightarrow4X_2\\ r_1:&\quad4X_1+2X_2\longrightarrow\varnothing\\ r_2:&\quad4X_2\longrightarrow2X_3\\ r_3:&\quad2X_3\longrightarrow X_0+6X_1+X_2\\ r_4:&\quad\varnothing\longrightarrow2X_2+2X_3 \end{aligned}
S=r0r1r2r3r4X010010X104060X242412X320222S=\begin{array}{c|rrrrr} &r_0&r_1&r_2&r_3&r_4\\\hline X_0&-1&0&0&1&0\\ X_1&0&-4&0&6&0\\ X_2&4&-2&-4&1&2\\ X_3&-2&0&2&-2&2 \end{array}

Here \varnothing means material enters or leaves the model. At equilibrium, reaction rates (2,3,2,2,2)(2,3,2,2,2) balance every species: S(2,3,2,2,2)T=0S(2,3,2,2,2)^{\mathsf T}=0.

Child Selections and D-unstable Cores

We extract square matrices from the stoichiometric matrix SS by choosing species and assigning each a different reaction that consumes it. Keep those species’ rows and the assigned columns, in the same order. These are child-selection matrices; they may overlap. For example:

X0r0X_0\mapsto r_0X1r1X_1\mapsto r_1
A=[1004],AD=[d0004d1],d0,d1>0A=\begin{bmatrix}-1&0\\0&-4\end{bmatrix},\qquad AD=\begin{bmatrix}-d_0&0\\0&-4d_1\end{bmatrix},\quad d_0,d_1>0

The DD means we may multiply each column by any positive number. A selection is D-stable if every such scaling leaves all eigenvalues with negative real parts: disturbances in that linear system eventually decay. The example above is D-stable because its eigenvalues are always d0-d_0 and 4d1-4d_1.

A selection is D-unstable if some positive scaling gives an eigenvalue with positive real part. A D-unstable core is a selection with that property that loses it whenever we remove matching rows and columns to make a smaller selection.

For this counterexample, 22 of the 24 selections are D-stable. The other two always retain a zero eigenvalue. All 24 are therefore D-nonunstable: none can acquire a positive real part under positive column scaling. There is no D-unstable core.

Kinetics: From Reaction Amounts to Motion

The stoichiometric matrix SS tells us how much each reaction consumes and produces, but not how fast it runs. To describe motion, we add kinetics: reaction rates v(x)v(x) that depend on the species concentrations xx.

dxdt=Sv(x),Rji=vjxix=x,G=SR\frac{dx}{dt}=S\,v(x),\qquad R_{ji}=\left.\frac{\partial v_j}{\partial x_i}\right|_{x=x^*},\qquad G=SR

The reaction-response matrix RR contains sensitivities, not the rates themselves. Entry RjiR_{ji} says how much reaction rjr_j speeds up when concentration XiX_i increases slightly at equilibrium. Multiplying SS by RR gives GG, the matrix governing small deviations from equilibrium.

R=[100E01/501/10000005/110000F0000]R=\begin{bmatrix}1&0&0&E\\0&1/50&1/1000&0\\0&0&5/11&0\\0&0&0&F\\0&0&0&0\end{bmatrix}

This example uses adjustable power-law rates. For instance, v0(x)=2x01/2x3E/2v_0(x)=2x_0^{1/2}x_3^{E/2} equals 2 at the equilibrium x=(1,1,1,1)x^*=(1,1,1,1), while its sensitivity to X3X_3 is EE. The slider changes this sensitivity while preserving the reactions and their equilibrium rates. These kinetic exponents are adjustable; they are not fixed by the stoichiometric coefficients.

Why the Full Network Can Oscillate and Grow

Reaction r0r_0 responds to both X0X_0 and X3X_3; reaction r1r_1 responds to both X1X_1 and X2X_2. A child selection cannot assign the same reaction twice. The full matrix G=SRG=SR includes these responses together. Their combined effect can generate growing oscillations even though none of the selected matrices is D-unstable.

That is the chart’s transition. With F0.6044F\approx0.6044 fixed, increasing EE moves a complex eigenvalue pair across zero real part, near E=81.867E=81.867. Negative real part gives decaying oscillations; zero gives constant-amplitude oscillations in the linear approximation; positive gives oscillatory growth. The transition does not establish a stable, self-sustaining cycle in the nonlinear system.

The counterexample shows that the absence of a D-unstable core does not guarantee a stable full network. The selections test particular response combinations, not independent physical subsystems: passing every selection test can miss instability arising from the combined kinetics.

All 24 Child Selections

Every conclusion holds for every positive column scaling. Two selections permit zero eigenvalues; none permits a positive real part.

X0r0X_{0} \mapsto r_{0}
[1]\begin{bmatrix}-1\end{bmatrix}

All real parts strictly negative.

X1r1X_{1} \mapsto r_{1}
[4]\begin{bmatrix}-4\end{bmatrix}

All real parts strictly negative.

X2r1X_{2} \mapsto r_{1}
[2]\begin{bmatrix}-2\end{bmatrix}

All real parts strictly negative.

X2r2X_{2} \mapsto r_{2}
[4]\begin{bmatrix}-4\end{bmatrix}

All real parts strictly negative.

X3r0X_{3} \mapsto r_{0}
[2]\begin{bmatrix}-2\end{bmatrix}

All real parts strictly negative.

X3r3X_{3} \mapsto r_{3}
[2]\begin{bmatrix}-2\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X1r1X_{1} \mapsto r_{1}
[1004]\begin{bmatrix}-1 & 0 \\ 0 & -4\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X2r1X_{2} \mapsto r_{1}
[1042]\begin{bmatrix}-1 & 0 \\ 4 & -2\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X2r2X_{2} \mapsto r_{2}
[1044]\begin{bmatrix}-1 & 0 \\ 4 & -4\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X3r3X_{3} \mapsto r_{3}
[1122]\begin{bmatrix}-1 & 1 \\ -2 & -2\end{bmatrix}

All real parts strictly negative.

X1r1X_{1} \mapsto r_{1}X2r2X_{2} \mapsto r_{2}
[4024]\begin{bmatrix}-4 & 0 \\ -2 & -4\end{bmatrix}

All real parts strictly negative.

X1r1X_{1} \mapsto r_{1}X3r0X_{3} \mapsto r_{0}
[4002]\begin{bmatrix}-4 & 0 \\ 0 & -2\end{bmatrix}

All real parts strictly negative.

X1r1X_{1} \mapsto r_{1}X3r3X_{3} \mapsto r_{3}
[4602]\begin{bmatrix}-4 & 6 \\ 0 & -2\end{bmatrix}

All real parts strictly negative.

X2r1X_{2} \mapsto r_{1}X3r0X_{3} \mapsto r_{0}
[2402]\begin{bmatrix}-2 & 4 \\ 0 & -2\end{bmatrix}

All real parts strictly negative.

X2r1X_{2} \mapsto r_{1}X3r3X_{3} \mapsto r_{3}
[2102]\begin{bmatrix}-2 & 1 \\ 0 & -2\end{bmatrix}

All real parts strictly negative.

X2r2X_{2} \mapsto r_{2}X3r0X_{3} \mapsto r_{0}
[4422]\begin{bmatrix}-4 & 4 \\ 2 & -2\end{bmatrix}

One zero eigenvalue; others negative.

X2r2X_{2} \mapsto r_{2}X3r3X_{3} \mapsto r_{3}
[4122]\begin{bmatrix}-4 & 1 \\ 2 & -2\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X1r1X_{1} \mapsto r_{1}X2r2X_{2} \mapsto r_{2}
[100040424]\begin{bmatrix}-1 & 0 & 0 \\ 0 & -4 & 0 \\ 4 & -2 & -4\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X1r1X_{1} \mapsto r_{1}X3r3X_{3} \mapsto r_{3}
[101046202]\begin{bmatrix}-1 & 0 & 1 \\ 0 & -4 & 6 \\ -2 & 0 & -2\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X2r1X_{2} \mapsto r_{1}X3r3X_{3} \mapsto r_{3}
[101421202]\begin{bmatrix}-1 & 0 & 1 \\ 4 & -2 & 1 \\ -2 & 0 & -2\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X2r2X_{2} \mapsto r_{2}X3r3X_{3} \mapsto r_{3}
[101441222]\begin{bmatrix}-1 & 0 & 1 \\ 4 & -4 & 1 \\ -2 & 2 & -2\end{bmatrix}

All real parts strictly negative.

X1r1X_{1} \mapsto r_{1}X2r2X_{2} \mapsto r_{2}X3r0X_{3} \mapsto r_{0}
[400244022]\begin{bmatrix}-4 & 0 & 0 \\ -2 & -4 & 4 \\ 0 & 2 & -2\end{bmatrix}

One zero eigenvalue; others negative.

X1r1X_{1} \mapsto r_{1}X2r2X_{2} \mapsto r_{2}X3r3X_{3} \mapsto r_{3}
[406241022]\begin{bmatrix}-4 & 0 & 6 \\ -2 & -4 & 1 \\ 0 & 2 & -2\end{bmatrix}

All real parts strictly negative.

X0r0X_{0} \mapsto r_{0}X1r1X_{1} \mapsto r_{1}X2r2X_{2} \mapsto r_{2}X3r3X_{3} \mapsto r_{3}
[1001040642412022]\begin{bmatrix}-1 & 0 & 0 & 1 \\ 0 & -4 & 0 & 6 \\ 4 & -2 & -4 & 1 \\ -2 & 0 & 2 & -2\end{bmatrix}

All real parts strictly negative.

Example Code