Skip to contents

[Experimental] Using the leading complex eigenvector from getStability(), constructs a MizerSim object covering one period of the limit cycle in the linear approximation. The result can be inspected with all standard mizer plotting functions (e.g. plotBiomass(), plotSpectra()).

Usage

getLimitCycleSim(x, amplitude = 0.1, t_save = 0.1, ...)

Arguments

x

A MizerParams object at a steady state, typically the output of steadyNewton(), or the list returned by getStability().

amplitude

Maximum relative perturbation \(\max_w |\delta N(t,w)|/N^*(w)\) across the limit cycle. Default 0.1.

t_save

The time interval between saved time steps in the returned MizerSim. Defaults to 0.1.

...

Additional arguments forwarded to getStability() when x is a MizerParams object.

Value

A MizerSim object whose time axis spans one period \([0, T]\) of the linearised limit cycle.

Details

Mathematical background

Near a Hopf bifurcation the dominant eigenvalue of the linearised one-step map is a complex conjugate pair \(\lambda = r e^{i\theta}\) with \(r \approx 1\) and angular frequency \(\theta = 2\pi/T\) per time step. The linearised perturbation is $$\delta N(t) = A\,\operatorname{Re}[e^{i\theta t}\,\mathbf{v}],$$ where \(\mathbf{v}\) is the leading complex eigenvector (normalised so \(\max_w |\mathbf{v}(w)| = 1\)) and \(A\) is chosen so that the maximum relative perturbation \(\max_{t,w}|\delta N(t,w)|/N^*(w) = \) amplitude. The full state at each time step is $$N(t) = \max(N^* + \delta N(t),\; 0)$$ (clipping prevents negative abundances at large amplitudes).

The resource is placed at its quasi-static semichemostat equilibrium \(n_{pp}^*(N(t))\) at each step, consistent with the reduced Jacobian used by getStability().

The returned MizerSim has times running from 0 to \(T\) (the period in time steps, typically years).