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.

virtual void integrate(double currentTime, double timeStep) override

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