Basic Nonstiff Methods
This page covers the fundamental explicit methods for solving SDEs. These methods are suitable for non-stiff problems and provide the foundation for more advanced algorithms.
Euler-Maruyama Methods
EM - Euler-Maruyama
EulerHeun - Euler-Heun
StochasticDiffEqLowOrder.EulerHeun — Type
EulerHeun()EulerHeun: Stochastic Euler-Heun Method
A two-stage predictor-corrector (Heun-type) method for Stratonovich SDEs, the Stratonovich analogue of Euler-Maruyama. An Euler step forms the predictor ũ, then the drift and diffusion are re-evaluated there and trapezoidally averaged to form the update:
- predictor:
ũ = uₙ + f(uₙ)·Δt + g(uₙ)·ΔW - corrector:
uₙ₊₁ = uₙ + ½(f(uₙ) + f(ũ))·Δt + ½(g(uₙ) + g(ũ))·ΔW
This corresponds to the improved-Euler scheme of Roberts (2012). Note this is a genuine two-stage scheme (two drift and two diffusion evaluations per step), not a single-stage predictor-corrector.
Method Properties
- Strong Order: 1.0 for Stratonovich SDEs with commutative noise (e.g. scalar, diagonal, or additive); 1/2 for general non-commutative noise, which is the value reported by
alg_order(the same convention asEM) - Weak Order: 1.0
- Time stepping: Fixed step size
- Noise types: General (scalar, diagonal, non-diagonal)
- SDE interpretation: Stratonovich
When to Use
- For Stratonovich SDEs where a simple, low-cost method is sufficient
- As the Stratonovich counterpart to
EMfor Itô problems - When adaptive time stepping is not required; see
LambaEulerHeunfor an adaptive variant
References
- Roberts, A.J., "Modify the improved Euler scheme to integrate stochastic differential equations", arXiv:1210.0933 (2012)
- Kloeden, P.E., Platen, E., Numerical Solution of Stochastic Differential Equations, Springer, Berlin Heidelberg, p. 373 (1992)
LambaEM - Adaptive Euler-Maruyama
LambaEulerHeun - Adaptive Euler-Heun
Milstein Methods
RKMil - Runge-Kutta Milstein
Split Methods
SplitEM - Split Euler-Maruyama
When to Use Basic Methods
Use EM when:
- Computational efficiency is most important
- Problem is not stiff
- Any noise type (most flexible)
- Simple implementation needed
Use EulerHeun when:
- Working in Stratonovich interpretation
- Need slightly better accuracy than EM
- Problem has non-commutative noise
Use LambaEM/LambaEulerHeun when:
- Want adaptive time stepping with basic methods
- Need error control but not high accuracy
- Good balance of simplicity and adaptivity
Use RKMil when:
- Higher accuracy than Euler methods
- Problem has diagonal or scalar noise
- Strong order 1.0 convergence required
These methods form the foundation of stochastic numerical analysis. While higher-order methods often provide better performance, the basic methods are essential for:
- Initial testing and prototyping
- Problems where simplicity is preferred
- Educational purposes
- Fallback options when advanced methods fail