Skip to content

Solver Comparison

This page provides comprehensive comparison tables to help you choose the right solver for your problem.

SolverTypeOrderStiff?DAE?Best For
DoPri5Explicit RK5(4)NoNoGeneral purpose non-stiff
Tsit5Explicit RK5(4)NoNoSlightly more efficient than DoPri5
Vern6Explicit RK6(5)NoNoMedium-high accuracy
Vern7Explicit RK7(6)NoNoHigh accuracy
Vern8Explicit RK8(7)NoNoVery high accuracy
Radau5Implicit RK5YesYesStiff + high accuracy
Esdirk32ESDIRK2(1)YesNoMildly stiff, cheap
Esdirk43ESDIRK3(2)YesNoModerately stiff
Esdirk54ESDIRK4(3)YesNoGeneral stiff
BdfMultistep1-5YesYesVery stiff, variable order
AutoAdaptivevariesYesPartialDon’t know / first try
SolverA-stableL-stableA(alpha)-stableNotes
DoPri5NoNoNoExplicit — no stability for stiff
Tsit5NoNoNoSame as DoPri5
Vern6/7/8NoNoNoExplicit methods
Radau5YesYesYesBest for stiff: no oscillation damping issues
Esdirk32YesYesYesL-stable
Esdirk43YesYesYesL-stable
Esdirk54YesYesYesL-stable like Radau5
Bdf-1YesYesYesBackward Euler
Bdf-2YesYesYesMost commonly used BDF order
Bdf-3,4,5NoNoYesA(alpha)-stable only

L-stability means the method completely damps transients at infinity, which is critical for problems where fast modes should die out quickly. Radau5, all ESDIRK variants, and Bdf-1/2 are L-stable.

SolverRHS evals/stepLinear solves/stepMemoryStartup cost
DoPri56 (FSAL)0O(dim)None
Tsit56 (FSAL)0O(dim)None
Vern69 (FSAL)0O(dim)None
Vern7100O(dim)None
Vern8130O(dim)None
Radau53-5/Newton iter2 (real+complex)O(dim^2)Jacobian + LU
Esdirk322-32O(dim^2)Jacobian + LU
Esdirk433-43O(dim^2)Jacobian + LU
Esdirk544-55O(dim^2)Jacobian + LU
Bdf1-3/Newton iter1O(dim^2)Jacobian + LU

Implicit methods require O(dim^2) memory for the Jacobian and O(dim^3) work for LU factorization. For small systems (dim < 100), this overhead is negligible. For large systems, consider sparse Jacobians or matrix-free methods.

Is your problem stiff?
|
+-- No ---> Is high accuracy needed (rtol < 1e-8)?
| |
| +-- No ---> DoPri5 or Tsit5
| +-- Yes --> Vern6, Vern7, or Vern8
|
+-- Yes --> Is it a DAE (mass matrix)?
| |
| +-- Yes --> Radau5 or Bdf
| +-- No ---> How stiff?
| |
| +-- Mildly stiff --> Esdirk54
| +-- Very stiff ----> Radau5 (high accuracy)
| | or Bdf (moderate accuracy)
|
+-- Unknown -> Auto (tries non-stiff first, falls back to stiff)

The following table shows function evaluations and final error for each solver on standard benchmark problems (rtol = 1e-6, atol = 1e-9).

ProblemDoPri5Tsit5Vern6Vern8
Exponential decay
y’ = -y, t=[0,10]~60 evals~55 evals~50 evals~45 evals
Error~1e-7~1e-7~1e-8~1e-9
Harmonic oscillator
x” = -x, t=[0,100]~350 evals~320 evals~280 evals~250 evals
Error~1e-6~1e-6~1e-7~1e-8
Lorenz system
sigma=10, rho=28, t=[0,20]~2100 evals~1900 evals~1700 evals~1500 evals
Error*~1e-5~1e-5~1e-6~1e-7

*Lorenz error measured at short time (t=5) due to chaos.

ProblemRadau5Esdirk54BdfDoPri5
Van der Pol (mu=1000)
t=[0, 3000]~800 evals~1200 evals~600 evalsFAILS
LU factorizations~200~300~500
Robertson
t=[0, 1e11]~250 evals~400 evals~200 evalsFAILS
LU factorizations~80~120~180

Explicit solvers (DoPri5, Tsit5, Verner) fail on stiff problems — they require impossibly small step sizes to maintain stability.

FeatureRadau5Esdirk54Bdf
Order541-5 (variable)
StabilityL-stableL-stableA(alpha) for order > 2
Cost/stepHighMediumLow
Step sizeLargeMediumLarge
Best tolerancertol < 1e-6rtol ~ 1e-4 to 1e-6rtol ~ 1e-3 to 1e-6
DAE supportYes (index-1)NoYes (index-1)
StartupSlow (large LU)FastSlow (ramp-up)
Memory3x Jacobian1x Jacobian1x Jacobian

Rules of thumb:

  • Radau5: Best for stiff problems requiring high accuracy. The higher order and L-stability make it ideal when you need 6+ correct digits.
  • Esdirk54: Good middle ground. Cheaper per step than Radau5, L-stable, but lower order means more steps at tight tolerances.
  • Bdf: Best for very stiff problems at moderate accuracy. Variable order adapts to the problem. Cheapest per step (single LU solve), but needs several steps to “ramp up” to high order.

The Auto solver uses a two-phase strategy:

  1. Classification: Samples the Jacobian to estimate stiffness

    • Ratio of max/min Jacobian elements > 10,000: Very stiff
    • Ratio > 100: Moderately stiff
    • Otherwise: Non-stiff
  2. Solver selection: Based on stiffness and requested accuracy

    • Non-stiff + standard accuracy: Tsit5
    • Non-stiff + high accuracy: Vern6 or Vern8
    • Moderately stiff: Esdirk54
    • Very stiff + standard accuracy: Bdf
    • Very stiff + high accuracy: Radau5
    • Unknown: Try Tsit5, fallback to Esdirk54 on failure