ch.epfl.lis.sde.solver
Class EulerMaruyama
java.lang.Object
ch.epfl.lis.sde.solver.SdeSolver
ch.epfl.lis.sde.solver.EulerMaruyama
public class EulerMaruyama
- extends SdeSolver
This class implements the explicit Euler-Maruyama method (strong order of convergence 0.5) to be used with SDEs using Ito scheme.
The iterative Euler-Maruyama method is given by the formula [1]
Xn+1 = Xn + Fn*h + Gn*dWn (Euler)
where h is the integration step size. This method requires to use the Ito scheme.
If one wants to integrate using the Stratonovich scheme, the Euler-Heun method
has to be applied.
If the diffusion term is zero, then the problem is fully deterministic. In this case,
the Euler method achieves strong order of convergence 1. Following [1],
Euler method can have strong order of convergence of 1 in case of additive noise,
i.e. when the diffusion term is constant and has the form
G(t,x) := G(t)
with appropriate smoothness assumptions on both drift F and diffusion G term.
"Note however that the most widely used Euler scheme for the numeric solution of
Langevin equations requires the equation to be in Ito form."
http://en.wikipedia.org/wiki/Stratonovich_integral
If one wants to integrate using the Stratonovich scheme, the Euler-Heun method
can be used. [1-2]
Xn+1 = Xn + Fn*h + 0.5[Gn + G(Xaux)]*dWn (Euler-Heun)
Xaux = Xn + Gn*dWn
[1] P.E. Kloeden, E. Platen, and H. Schurz, Numerical solution of SDE through
computer experiments, Springer, 1994. (pp 98, 150-153)
[2] H. Gilsing and T. Shardlow, SDELab: A package for solving stochastic differ-
ential equations in MATLAB, Journal of Computational and Applied Math-
ematics 205 (2007), no. 2, 1002–1018.
- Author:
- Thomas Schaffter (firstname.name@gmail.com)
Method Summary |
void |
advance(double t,
double h,
cern.colt.matrix.DoubleMatrix1D dW,
cern.colt.matrix.DoubleMatrix1D dZ,
cern.colt.matrix.DoubleMatrix1D Xin,
cern.colt.matrix.DoubleMatrix1D Xout)
Proceed on iteration of the numerical integration (step size = h) |
java.lang.String |
getDescription()
Returns a description for this solver. |
Methods inherited from class ch.epfl.lis.sde.solver.SdeSolver |
checkConvergence, checkX, converged, generateW, generateWienerIncrements, generateWZ, getAbsolutePrecision, getH, getRelativePrecision, getSystem, getX, init, integrate, reset, setAbsolutePrecision, setH, setRelativePrecision, setSystem, setX, step |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
EulerMaruyama
public EulerMaruyama()
- Default constructor
advance
public void advance(double t,
double h,
cern.colt.matrix.DoubleMatrix1D dW,
cern.colt.matrix.DoubleMatrix1D dZ,
cern.colt.matrix.DoubleMatrix1D Xin,
cern.colt.matrix.DoubleMatrix1D Xout)
throws java.lang.Exception
- Proceed on iteration of the numerical integration (step size = h)
- Specified by:
advance
in class SdeSolver
- Throws:
java.lang.Exception
getDescription
public java.lang.String getDescription()
- Returns a description for this solver.
- Overrides:
getDescription
in class SdeSolver