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

Euler method for the Ito and Stratonovich integrals.

For Ito schema, the Euler method (also called as Euler-Maruyama method) is given by:

\[\begin{split}\begin{aligned} Y_{n+1} &=Y_{n}+f\left(Y_{n}\right) h_{n}+g\left(Y_{n}\right) \Delta W_{n} \\ \Delta W_{n} &=\left[W_{t+h}-W_{t}\right] \sim \sqrt{h} \mathcal{N}(0,1) \end{aligned}\end{split}\]

As the order of convergence for the Euler-Maruyama method is low (strong order of convergence 0.5, weak order of convergence 1), the numerical results are inaccurate unless a small step size is used. In fact, Euler-Maruyama represents the order 0.5 strong Taylor scheme.

For Stratonovich scheme, the Euler-Heun method has to be used instead of the Euler-Maruyama method

\[\begin{split}\begin{aligned} Y_{n+1} &=Y_{n}+f_{n} h+\frac{1}{2}\left[g_{n}+g\left(\bar{Y}_{n}\right)\right] \Delta W_{n} \\ \bar{Y}_{n} &=Y_{n}+g_{n} \Delta W_{n} \\ \Delta W_{n} &=\left[W_{t+h}-W_{t}\right] \sim \sqrt{h} \mathcal{N}(0,1) \end{aligned}\end{split}\]

See also