brainpy.integrators.sde.normal.ExponentialEuler#

class brainpy.integrators.sde.normal.ExponentialEuler(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None, dyn_vars=None, state_delays=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).

See also

Euler, Heun, Milstein

__init__(f, g, dt=None, name=None, show_code=False, var_type=None, intg_type=None, wiener_type=None, dyn_vars=None, state_delays=None)[source]#

Methods

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

build()

load_states(filename[, verbose])

Load the model states.

nodes([method, level, include_self])

Collect all children nodes.

register_implicit_nodes(*nodes, **named_nodes)

register_implicit_vars(*variables, ...)

save_states(filename[, variables])

Save the model states.

set_integral(f)

Set the integral function.

train_vars([method, level, include_self])

The shortcut for retrieving all trainable variables.

unique_name([name, type_])

Get the unique name for this object.

vars([method, level, include_self])

Collect all variables in this node and the children nodes.

Attributes

arguments

All arguments when calling the numer integrator of the differential equation.

dt

The numerical integration precision.

integral

The integral function.

name

Name of the model.

parameters

The parameters defined in the differential equation.

state_delays

State delays.

variables

The variables defined in the differential equation.