ch.epfl.lis.sde.solver
Class EulerMaruyama

java.lang.Object
  extended by ch.epfl.lis.sde.solver.SdeSolver
      extended by 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)

Constructor Summary
EulerMaruyama()
          Default constructor
 
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
 

Constructor Detail

EulerMaruyama

public EulerMaruyama()
Default constructor

Method Detail

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