Numerical Methods for SDEs

Numerical methods for stochastic differential equations.

Euler(f, g[, dt, name, show_code, var_type, ...])

Heun(f, g[, dt, name, show_code, var_type, ...])

Milstein(f, g[, dt, name, show_code, ...])

ExponentialEuler(f, g[, dt, name, ...])

First order, explicit exponential Euler method.

SRK1W1(f, g[, dt, name, show_code, ...])

Order 2.0 weak SRK methods for SDEs with scalar Wiener process.

SRK2W1(f, g[, dt, name, show_code, ...])

Order 1.5 Strong SRK Methods for SDEs witdt Scalar Noise.

KlPl(f, g[, dt, name, show_code, var_type, ...])

class brainpy.integrators.sde.Euler(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None)[source]
class brainpy.integrators.sde.Heun(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None)[source]
class brainpy.integrators.sde.Milstein(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None)[source]
class brainpy.integrators.sde.ExponentialEuler(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None)[source]

First order, explicit exponential Euler method.

For a SDE equation of the form

\[d y=(Ay+ F(y))dt + g(y)dW(t) = f(y)dt + g(y)dW(t), \quad y(0)=y_{0}\]

its schema is given by [1]_

\[\begin{split}y_{n+1} & =e^{\Delta t A}(y_{n}+ g(y_n)\Delta W_{n})+\varphi(\Delta t A) F(y_{n}) \Delta t \\ &= y_n + \Delta t \varphi(\Delta t A) f(y) + e^{\Delta t A}g(y_n)\Delta W_{n}\end{split}\]

where \(\varphi(z)=\frac{e^{z}-1}{z}\).

References

1

Erdoğan, Utku, and Gabriel J. Lord. “A new class of exponential integrators for stochastic differential equations with multiplicative noise.” arXiv preprint arXiv:1608.07096 (2016).

class brainpy.integrators.sde.SRK1W1(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None)[source]

Order 2.0 weak SRK methods for SDEs with scalar Wiener process.

This method has have strong orders :backend:`(p_d, p_s) = (2.0,1.5)`.

The Butcher table is:

\[\begin{split}\begin{array}{l|llll|llll|llll} 0 &&&&& &&&& &&&& \\ 3/4 &3/4&&&& 3/2&&& &&&& \\ 0 &0&0&0&& 0&0&0&& &&&&\\ \hline 0 \\ 1/4 & 1/4&&& & 1/2&&&\\ 1 & 1&0&&& -1&0&\\ 1/4& 0&0&1/4&& -5&3&1/2\\ \hline & 1/3& 2/3& 0 & 0 & -1 & 4/3 & 2/3&0 & -1 &4/3 &-1/3 &0 \\ \hline & &&&& 2 &-4/3 & -2/3 & 0 & -2 & 5/3 & -2/3 & 1 \end{array}\end{split}\]

References

1

Rößler, Andreas. “Strong and weak approximation methods for stochastic differential equations—some recent developments.” Recent developments in applied probability and statistics. Physica-Verlag HD, 2010. 127-153.

2

Rößler, Andreas. “Runge–Kutta methods for the strong approximation of solutions of stochastic differential equations.” SIAM Journal on Numerical Analysis 48.3 (2010): 922-952.

class brainpy.integrators.sde.SRK2W1(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None)[source]

Order 1.5 Strong SRK Methods for SDEs witdt Scalar Noise.

This method has have strong orders :backend:`(p_d, p_s) = (3.0,1.5)`.

The Butcher table is:

\[egin{array}{c|cccc|cccc|ccc|} 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & & & & \ 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & & & & \ 1 / 2 & 1 / 4 & 1 / 4 & 0 & 0 & 1 & 1 / 2 & 0 & 0 & & & & \ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & & & & \ \hline 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & & & & \ 1 / 4 & 1 / 4 & 0 & 0 & 0 & -1 / 2 & 0 & 0 & 0 & & & & \ 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & & & & \ 1 / 4 & 0 & 0 & 1 / 4 & 0 & 2 & -1 & 1 / 2 & 0 & & & & \ \hline & 1 / 6 & 1 / 6 & 2 / 3 & 0 & -1 & 4 / 3 & 2 / 3 & 0 & -1 & -4 / 3 & 1 / 3 & 0 \ \hline & & & & &2 & -4 / 3 & -2 / 3 & 0 & -2 & 5 / 3 & -2 / 3 & 1 \end{array}\]

References

[1] Rößler, Andreas. “Strong and weak approximation methods for stochastic differential

equations—some recent developments.” Recent developments in applied probability and statistics. Physica-Verlag HD, 2010. 127-153.

[2] Rößler, Andreas. “Runge–Kutta methods for the strong approximation of solutions of

stochastic differential equations.” SIAM Journal on Numerical Analysis 48.3 (2010): 922-952.

class brainpy.integrators.sde.KlPl(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None)[source]