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
StochasticDiffEq.EM
— TypeEM: Nonstiff Method The Euler-Maruyama method is the simplest and most fundamental numerical method for solving stochastic differential equations.
Method Properties
- Strong Order: 0.5 (in the Itô sense)
- Weak Order: 1.0
- Time stepping: Fixed time step only
- Noise types: All forms (diagonal, non-diagonal, scalar, additive, and colored noise)
- SDE interpretation: Itô
Parameters
split::Bool = true
: Controls step splitting for improved stability with large diffusion eigenvalues
When to Use
- First choice for simple SDE problems
- When computational efficiency is more important than accuracy
- For problems with all noise types including non-commutative noise
- When step splitting is needed for stability with large diffusion terms
Algorithm Description
The method discretizes the SDE:
du = f(u,p,t)dt + g(u,p,t)dW
using the scheme:
u_{n+1} = u_n + f(u_n,p,t_n)Δt + g(u_n,p,t_n)ΔW_n
When split=true
, the method uses step splitting which can improve stability for problems with large diffusion eigenvalues.
References
- Kloeden, P.E., Platen, E., "Numerical Solution of Stochastic Differential Equations", Springer (1992)
EulerHeun - Euler-Heun
StochasticDiffEq.EulerHeun
— TypeEulerHeun()
EulerHeun: Euler-Heun Method (Nonstiff)
The Euler-Heun method is the Stratonovich analog of the Euler-Maruyama method, providing strong order 0.5 convergence in the Stratonovich sense.
Method Properties
- Strong Order: 0.5 (in the Stratonovich sense)
- Weak Order: 1.0
- Time stepping: Fixed time step only
- Noise types: All forms (diagonal, non-diagonal, scalar, additive, and colored noise)
- SDE interpretation: Stratonovich
When to Use
- When working with Stratonovich SDEs
- For problems naturally formulated in Stratonovich interpretation
- When physical interpretation requires Stratonovich calculus
- As the Stratonovich counterpart to Euler-Maruyama
Algorithm Description
For Stratonovich SDEs:
du = f(u,p,t)dt + g(u,p,t)∘dW
The method uses:
u_{n+1} = u_n + f(u_n,p,t_n)Δt + g(u_n + 0.5*g(u_n,p,t_n)ΔW_n, p, t_n)ΔW_n
Stratonovich vs Itô
- EulerHeun: For Stratonovich SDEs
- EM: For Itô SDEs
- Conversion between interpretations changes the drift term
References
- Kloeden, P.E., Platen, E., "Numerical Solution of Stochastic Differential Equations", Springer (1992)
LambaEM - Adaptive Euler-Maruyama
StochasticDiffEq.LambaEM
— TypeLambaEM(split=true)
LambaEM: Adaptive Euler-Maruyama Method (Nonstiff)
Adaptive time-stepping version of the Euler-Maruyama method with error estimation based on the work of Lamba and Rackauckas.
Method Properties
- Strong Order: 0.5 (in the Itô sense)
- Weak Order: 1.0
- Time stepping: Adaptive with embedded error estimation
- Noise types: All forms (diagonal, non-diagonal, scalar, additive, and colored noise)
- SDE interpretation: Itô
Parameters
split::Bool = true
: Controls step splitting for improved stability
When to Use
- When adaptive time stepping is needed with basic Euler-Maruyama
- For problems requiring error control without high-order accuracy
- When computational efficiency and adaptivity are both important
- For non-commutative noise where higher-order methods aren't applicable
Algorithm Description
Extends EM with adaptive time stepping using error estimation. The method computes two approximations and uses their difference to estimate local error.
Error Control
- Embedded error estimation for adaptive stepping
- Accepts standard tolerances (abstol, reltol)
- Automatic step size adjustment
References
- Based on error estimation work by Lamba and Rackauckas
LambaEulerHeun - Adaptive Euler-Heun
StochasticDiffEq.LambaEulerHeun
— TypeLambaEulerHeun()
LambaEulerHeun: Adaptive Euler-Heun Method (Nonstiff)
Adaptive time-stepping version of the Euler-Heun method with error estimation for Stratonovich SDEs.
Method Properties
- Strong Order: 0.5 (in the Stratonovich sense)
- Weak Order: 1.0
- Time stepping: Adaptive with embedded error estimation
- Noise types: All forms (diagonal, non-diagonal, scalar, additive, and colored noise)
- SDE interpretation: Stratonovich
When to Use
- When adaptive time stepping is needed for Stratonovich SDEs
- For problems requiring error control in Stratonovich interpretation
- When computational efficiency and adaptivity are both important
- For non-commutative noise in Stratonovich formulation
Algorithm Description
Adaptive version of EulerHeun method with error estimation for automatic step size control.
Error Control
- Embedded error estimation for adaptive stepping
- Standard tolerance control (abstol, reltol)
- Automatic step size adjustment for Stratonovich problems
References
- Error estimation methodology by Lamba, adapted by Rackauckas
Milstein Methods
RKMil - Runge-Kutta Milstein
StochasticDiffEq.RKMil
— TypeKloeden, P.E., Platen, E., Numerical Solution of Stochastic Differential Equations. Springer. Berlin Heidelberg (2011)
RKMil(;interpretation=AlgorithmInterpretation.Ito)
RKMil: Runge-Kutta Milstein Method (Nonstiff)
Explicit Runge-Kutta discretization of the Milstein method achieving strong order 1.0 convergence for diagonal and scalar noise.
Method Properties
- Strong Order: 1.0 (for diagonal/scalar noise)
- Weak Order: Depends on tableau
- Time stepping: Adaptive
- Noise types: Diagonal and scalar noise only
- SDE interpretation: Configurable (Itô or Stratonovich)
Parameters
interpretation
: ChooseAlgorithmInterpretation.Ito
(default) orAlgorithmInterpretation.Stratonovich
When to Use
- When higher accuracy than Euler methods is needed
- For diagonal or scalar noise problems
- When strong order 1.0 convergence is required
- Alternative to SRI methods for simpler noise structures
Restrictions
- Only works with diagonal or scalar noise
- For non-diagonal noise, use RKMilCommute or RKMilGeneral
- For general noise, use SRI/SRA methods
Algorithm Description
Implements the Milstein scheme using Runge-Kutta techniques:
du = f(u,t)dt + g(u,t)dW + 0.5*g(u,t)*g'(u,t)*(dW^2 - dt)
where g'(u,t) is the derivative of g with respect to u.
References
- Kloeden, P.E., Platen, E., "Numerical Solution of Stochastic Differential Equations", Springer (1992)
- Milstein, G.N., "Numerical Integration of Stochastic Differential Equations"
Split Methods
SplitEM - Split Euler-Maruyama
StochasticDiffEq.SplitEM
— TypeSplitEM()
SplitEM: Split-Step Euler-Maruyama Method (Nonstiff)
Split-step version of the Euler-Maruyama method that separates the drift and diffusion terms for improved stability.
Method Properties
- Strong Order: 0.5 (in the Itô sense)
- Weak Order: 1.0
- Time stepping: Fixed time step
- Noise types: All forms (diagonal, non-diagonal, scalar, additive, and colored noise)
- SDE interpretation: Itô
When to Use
- When standard EM has stability issues with large diffusion terms
- Alternative to EM with split=true
- For problems where operator splitting is natural
- When drift and diffusion have different timescales
Algorithm Description
Applies operator splitting to treat drift and diffusion separately:
Step 1: u* = u_n + f(u_n,t_n)Δt (drift step)
Step 2: u_{n+1} = u* + g(u*,t_n)ΔW_n (diffusion step)
References
- Operator splitting methods for SDEs
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