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.
References
Cohen, Scott D, and Alan C Hindmarsh. 1996. “CVODE, a Stiff/Nonstiff ODE Solver in C.” Computers in Physics 10 (2): 138–43.
Serban, Radu, and Alan C Hindmarsh. 2005. “CVODES: The Sensitivity-Enabled ODE Solver in SUNDIALS.” In ASME 2005 International Design Engineering Technical Conferences and Computers and Information in Engineering Conference, 257–69. American Society of Mechanical Engineers.