Numerical methods and inspectable histories =========================================== The shared integrator returns time [s], a (samples, states) history array, method name and derivative evaluation count. Every sampled state is inspectable. Euler and RK4 use the caller's time grid; adaptive methods use SciPy solve_ivp with separate internal steps and interpolate onto that grid. .. code-block:: python import numpy as np from engineeringkit.integrators import integrate_ode result = integrate_ode(lambda t, y: -y, [1.], np.linspace(0, 2, 101), "rk4") print(result.summary()) fig, ax = result.plot(["normalized state"]) Euler has first-order global accuracy; classical RK4 has fourth-order global accuracy for sufficiently smooth problems. Neither is unconditionally stable. For decay y'=-a*y, Euler requires 0