13.5 Stiff ODEs
A stiff system of ordinary differential equations can be roughly characterized as systems presenting numerical difficulties for gradient-based stepwise solvers. Stiffness typically arises due to varying curvature in the dimensions of the state, for instance one component evolving orders of magnitude more slowly than another.25
Stan provides a specialized solver for stiff ODEs
(Cohen and Hindmarsh 1996; Serban and Hindmarsh 2005). An ODE system is
specified exactly the same way with a function of exactly the same
signature. The only difference is in the call to the integrator for
the solution; the rk45
suffix is replaced with bdf
, as in
y_hat = integrate_ode_bdf(sho, y0, t0, ts, theta, x_r, x_i);
Using the stiff (bdf
) integrator on a system that is not stiff
may be much slower than using the non-stiff (rk45
) integrator;
this is because it computes additional Jacobians to guide the
integrator. On the other hand, attempting to use the non-stiff
integrator for a stiff system will fail due to requiring a small step
size and too many steps.
Not coincidentally, high curvature in the posterior of a general Stan model poses the same kind of problem for Euclidean Hamiltonian Monte Carlo (HMC) sampling. The reason is that HMC is based on the leapfrog algorithm, a gradient-based, stepwise numerical differential equation solver specialized for Hamiltonian systems with separable potential and kinetic energy terms.↩︎