ch.epfl.lis.sde.solver
Class EulerHeun
java.lang.Object
ch.epfl.lis.sde.solver.SdeSolver
ch.epfl.lis.sde.solver.EulerHeun
public class EulerHeun
- extends SdeSolver
This class implements the explicit Euler-Heun method (strong order of convergence 0.5) to be used with SDEs using Stratonovich 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 |
EulerHeun()
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)
Steps the integration of one 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 |
EulerHeun
public EulerHeun()
- 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
- Steps the integration of one 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