Roessler

Roessler(
    var_name='roessler',
    a=0.2,
    b=0.2,
    c=5.7,
    state_variables=None,
    diagnostic_variables=None,
    *args,
    **kwargs,
)

Roessler chaotic oscillator.

A three-variable continuous-time system with a single scroll attractor:

dx/dt = -y - z
dy/dt = x + a*y
dz/dt = b + z*(x - c)

Parameters

var_name : str = 'roessler'

Label for the model output. Default 'roessler'.

a : float or callable or cc.Forcing = 0.2

Controls the strength of the y-feedback. Default 0.2.

b : float or callable or cc.Forcing = 0.2

Offset in the z equation. Default 0.2.

c : float or callable or cc.Forcing = 5.7

Nonlinear threshold in the z equation. Default 5.7.

Notes

The canonical chaotic attractor exists near a=b=0.2, c=5.7. State variables are x, y, z in that order. Time-varying parameters are resolved through get_param_value and support callables with signatures (t), (t, state), or (t, state, model).

References

Rössler, O. E. (1976). Phys. Lett. A, 57(5), 397–398.

Examples

import matplotlib.pyplot as plt
from climatecritters.model_critters.roessler import Roessler

model = Roessler()
output = model.integrate(
    t_span=(0, 200), y0=[0.1, 0.0, 0.0], method='RK45'
)
fig, ax = plt.subplots()
ax.plot(output.state_variables['x'], output.state_variables['z'],
        lw=0.3, alpha=0.8)
ax.set_xlabel('x'); ax.set_ylabel('z')
plt.savefig('docs/reference/figures/Roessler_example.png',
            dpi=150, bbox_inches='tight')

Roessler example output