Euler-Maruyama Method: Numerical Simulation
Euler-Maruyama Method: Numerical Simulation
Euler-Maruyama Method: Numerical Simulation
In Itô calculus, the Euler–Maruyama method (also called the Euler method) is a method for the
approximate numerical solution of a stochastic differential equation (SDE). It is a simple generalization of the
Euler method for ordinary differential equations to stochastic differential equations. It is named after Leonhard
Euler and Gisiro Maruyama. Unfortunately, the same generalization cannot be done for any arbitrary
deterministic method [1].
with initial condition X0 = x0 , where Wt stands for the Wiener process, and suppose that we wish to solve this
SDE on some interval of time [0, T]. Then the Euler–Maruyama approximation to the true solution X is the
Markov chain Y defined as follows:
set Y0 = x0;
recursively define Yn for 1 ≤ n ≤ N by
where
The random variables ΔWn are independent and identically distributed normal random variables with expected
value zero and variance .
Contents
Example
Numerical simulation
Computer implementation
See also
References
Example
Numerical simulation
An area that has benefited significantly from SDE is biology or more
precisely mathematical biology. Here the number of publications on
the use of stochastic model grew, as most of the models are nonlinear,
demanding numerical schemes.
Computer implementation
The following Python code implements the Euler–Maruyama method and uses it to solve the Ornstein–
Uhlenbeck process defined by
The random numbers for are generated using the NumPy mathematics package.
The following is simply the translation of the above code into the MATLAB (R2019b) programming
language:
1 %% Initialization and Utility
close all;
2 3 clear all;
4
5 numSims = 5; % display five runs
6 tBounds = [3 7]; % The bounds of t
7 N = 1000; % Compute 1000 grid points
8 dt = (tBounds(2) - tBounds(1)) / N ;
9 y_init = 1; % Initial y condition
10
11
12 pd = makedist('Normal',0,sqrt(dt)); % Initialize the probability distribution for our
13 % random variable with mean 0 and
14 % stdev of sqrt(dt)
15
16 c = [0.7, 1.5, 0.06]; % the initial Theta, Mu, and Sigma, respectively
17
18 ts = linspace(tBounds(1), tBounds(2), N); % From t0-->t1 with N points
19 ys = zeros(1,N); % 1xN Matrix of zeros
20
21 ys(1) = y_init;
22 %% Computing the Process
23 for j = 1:numSims
24 for i = 2:numel(ts)
25 t = (i-1) .* dt;
26 y = ys(i-1);
27 mu = c(1) .* (c(2) - y);
28 sigma = c(3);
29 dW = random(pd);
30
31 ys(i) = y + mu .* dt + sigma .* dW;
32 end
33 figure(69)
34 hold on;
35 plot(ts, ys, 'o')
36 end
See also
Milstein method
Runge–Kutta method (SDE)
References
1. Kloeden, P.E. & Platen, E. (1992). Numerical Solution of Stochastic Differential Equations.
Springer, Berlin. ISBN 3-540-54062-8.
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this
site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia
Foundation, Inc., a non-profit organization.