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
-
double alpha1 = 0
-
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/SMEBmethods. 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)*g2Warning
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
-
svIntegratorWeakSIESME(DynamicObject *dynIn, const SIESMECoefficients &coefficients)