Module: svStochasticIntegratorMayurama

class EulerMayuramaRandomVariableGenerator
#include <svStochasticIntegratorMayurama.h>

Random Number Generator for the Euler-Mayurama integrator

Warning

Stochastic integration is in beta.

Public Functions

inline void setSeed(size_t seed)

Sets the seed for the RNG

Eigen::VectorXd generate(size_t m, double h)

Generates m normally distributed RV samples, with mean zero and standard deviation equal to sqrt(h)

Protected Attributes

std::mt19937 rng = {std::random_device{}()}

Random Number Generator

std::normal_distribution<double> normal_rv = {0., 1.}

Standard normally distributed random variable

class svStochasticIntegratorMayurama : public StateVecStochasticIntegrator
#include <svStochasticIntegratorMayurama.h>

The 1-weak 1-strong order Euler-Mayurama stochastic integrator.

For an SDE of the form:

\[ dx = f(t,x)\,dt + \sum_i g_i(t,x)\,dW_i \]

The integrator, with timestep h, computes:

\[ x_{n+1} = x_n + f(t,x)\,h + \sum_i g_i(t,x)\,\sqrt{h}\,N_i \]

where \(N_i\) are independent and identically distributed standard normal random variables.

Public Functions

inline void setRNGSeed(size_t seed)

Sets the seed for the Random Number Generator used by this integrator.

As a stochastic integrator, random numbers are drawn during each time step. By default, a randomly generated seed is used each time.

If the seed is set, the integrator will always draw the same numbers during time-stepping.

virtual void integrate(double currentTime, double timeStep) override

Performs the integration of the associated dynamic objects up to time currentTime+timeStep

Public Members

EulerMayuramaRandomVariableGenerator rvGenerator

Random Number Generator for the integrator