svIntegratorWeakSIESME

struct SIESMECoefficients
#include <svIntegratorWeakSIESME.h>

Coefficients for the Tocino & Vigo-Aguiar weak second-order stochastic integrators SIEA / SMEA / SIEB / SMEB (the “improved/modified Euler” family).

The naming follows the SIEA/SMEA/SIEB/SMEB tableau.

Public Members

double alpha1 = 0

drift-stage weight on k0

double alpha2 = 0

drift-stage weight on k1

double gamma1 = 0

g0 noise weight

double lambda1 = 0

g1 noise weight on dW

double lambda2 = 0

g1 noise weight on sqrt(h)

double lambda3 = 0

g1 noise weight on W2

double mu1 = 0

g2 noise weight on dW

double mu2 = 0

g2 noise weight on sqrt(h)

double mu3 = 0

g2 noise weight on W2

double mu0 = 0

drift stage node time

double mubar0 = 0

diffusion stage node time

double lambda0 = 0

k1 stage drift scaling

double lambdabar0 = 0

g1/g2 stage drift scaling

double nu1 = 0

k1 stage noise scaling on dW

double nu2 = 0

k1 stage noise scaling on the dW^3 term (W3)

double beta2 = 0

g1 stage noise scaling on sqrt(h)

double beta3 = 0

g1 stage noise scaling on W2

double delta2 = 0

g2 stage noise scaling on sqrt(h)

double delta3 = 0

g2 stage noise scaling on W2

class svIntegratorWeakSIESME : public StochasticRKIntegratorBase
#include <svIntegratorWeakSIESME.h>

The svIntegratorWeakSIESME class implements the Tocino & Vigo-Aguiar family of weak second-order stochastic Runge-Kutta methods (SIEA, SMEA, SIEB, SMEB) for Ito SDEs with diagonal or scalar noise.

Implementation of the SIEA/SMEA/SIEB/SMEB methods. Unlike the Roessler weak methods, this family uses only the raw Gaussian Wiener increment and its polynomial moments (no three-point or two-point discrete random variables):

\[ W_2 = \frac{\Delta W^2}{\sqrt h}, \qquad W_3 = \nu_2\,\frac{\Delta W^3}{h}. \]

The two-stage predictor-corrector step (per noise source \(k\), diagonal noise) is, writing \(k_0 = f(t_n,x_n)\) and \(g_0 = g(t_n,x_n)\):

k1 = f( t_n + mu0*h,    x_n + lambda0*k0*h + nu1*g0*dW + g0*W3 )
g1 = g( t_n + mubar0*h, x_n + lambdabar0*k0*h + beta2*g0*sqrt(h) + beta3*g0*W2 )
g2 = g( t_n + mubar0*h, x_n + lambdabar0*k0*h + delta2*g0*sqrt(h) + delta3*g0*W2 )

x_{n+1} = x_n + (alpha1*k0 + alpha2*k1)*h
              + gamma1*g0*dW
              + (lambda1*dW + lambda2*sqrt(h) + lambda3*W2)*g1
              + (mu1*dW     + mu2*sqrt(h)     + mu3*W2)*g2

Warning

Stochastic integration is in beta.

Public Functions

svIntegratorWeakSIESME(DynamicObject *dynIn, const SIESMECoefficients &coefficients)

Constructs the integrator for the given DynamicObject with the passed coefficient tableau.

Protected Functions

virtual void integrateImpl(double currentTime, double timeStep) override = 0

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

Protected Attributes

const SIESMECoefficients coefficients

Coefficients to be used in the method