Start · 01
Install¶
TSDynamics requires Python ≥ 3.12.
or, with uv:
The C compiler requirement¶
Continuous and delay systems are compiled to native code by JiTCODE / JiTCDDE, which generate C from your symbolic equations and build it with your platform's compiler. A working C toolchain must be on the path:
Discrete maps do not need the C toolchain — they are JIT-compiled by Numba, which ships its own backend.
First call is slow, every later call is fast
The first integrate() on a system class compiles a shared library
and caches it under ~/.cache/tsdynamics/. Subsequent calls — even in
new Python sessions — load the cached binary. See the
compilation pipeline for details.
Optional extras¶
| Extra | Installs | When you want it |
|---|---|---|
tsdynamics[plot] |
matplotlib |
Plotting trajectories and diagrams in the examples |
tsdynamics[diffsol] |
pydiffsol |
Experimental Rust-backed ODE solver backend |
Verify the install¶
import tsdynamics as ts
print(ts.__version__)
print(ts.registry.families()) # {'ode': 118, 'dde': 5, 'map': 26}
traj = ts.Henon().iterate(steps=100) # no C compiler needed for maps
print(traj) # Trajectory(n_steps=100, dim=2, ...)
If ts.Lorenz().integrate(final_time=1.0) also succeeds, the C toolchain
is correctly set up.
Next¶
02 · First trajectory — a complete worked example across all three system families.