Systems · Continuous
Continuous systems¶
The largest family: 118 ODE systems, all subclasses of
ContinuousSystem. Each declares its parameters
and dimension at class level and defines the vector field in one symbolic
_equations method; JiTCODE compiles it to C on first use and the binary
is cached across sessions (see
the compilation pipeline).
import tsdynamics as ts
ross = ts.Rossler() # a=0.2, b=0.2, c=5.7
traj = ross.integrate(final_time=200.0, dt=0.02)
traj["x"] # named components
Categories¶
| Category | Count | Flavor |
|---|---|---|
chaotic_attractors |
47 | The classics: Lorenz, Rössler, Chen, Chua, Sprott flows, Duffing, Thomas, ... |
chem_bio_systems |
14 | Chemical oscillators and excitable media: Brusselator, FitzHugh–Nagumo, ... |
climate_geophysics |
9 | Atmosphere and geodynamo models: Lorenz-84, Lorenz-96, Rikitake, ... |
coupled_systems |
14 | Coupled and driven oscillator networks |
exotic_systems |
15 | Hyperchaos, multiscroll, and other unusual flows |
oscillatory_systems |
8 | Tori, Lissajous figures, stick–slip and relaxation oscillators |
physical_systems |
8 | Mechanical and electrical models: pendula, circuits |
population_dynamics |
3 | Ecological flows: predator–prey and competition models |
Each system has its own generated page in this section with equations, defaults, and a phase portrait.
Integrating¶
sys.integrate(
final_time=100.0, # end of the window
dt=0.02, # OUTPUT grid only — the stepper is adaptive
t0=0.0, # start time (warm restarts allowed)
ic=None, # initial state; falls back to self.ic, then random
method="RK45", # "RK45"/"dopri5", "DOP853", "LSODA", "VODE"
rtol=1e-6, atol=1e-9,
) -> Trajectory
lyapunov_spectrum(final_time=200.0, dt=0.1, burn_in=50.0, n_exp=None, ...)
computes the spectrum from compiled variational equations — see
Lyapunov spectra.
Variable-dimension systems¶
A few systems (Lorenz-96, Kuramoto–Sivashinsky, MultiChua) have a parameter that sets the number of equations. Such parameters are structural — baked into the compiled binary rather than adjustable at runtime:
Changing f is free; changing N triggers one compile per new value
(each cached separately).
See also¶
- The mental model — the
_equationscontract in full - Integrate & iterate — methods, tolerances, the
Trajectoryobject