svStochasticIntegratorRS
-
struct RSCoefficients
- #include <svStochasticIntegratorRS.h>
Coefficients for the Roessler-Stratonovich weak-order-2 methods RS1 / RS2. Names follow the RS1 / RS2 tableau.
Public Members
-
double a021
drift-stage A-matrix coefficient
-
double a031
drift-stage A-matrix coefficient
-
double a032
drift-stage A-matrix coefficient
-
double a131
drift-stage A-matrix coefficient
-
double a141
drift-stage A-matrix coefficient
-
double b031
first diffusion-stage B-matrix coefficient
-
double b032
first diffusion-stage B-matrix coefficient
-
double b121
first diffusion-stage B-matrix coefficient
-
double b131
first diffusion-stage B-matrix coefficient
-
double b132
first diffusion-stage B-matrix coefficient
-
double b141
first diffusion-stage B-matrix coefficient
-
double b142
first diffusion-stage B-matrix coefficient
-
double b143
first diffusion-stage B-matrix coefficient
-
double b221
second diffusion-stage B-matrix coefficient
-
double b231
second diffusion-stage B-matrix coefficient
-
double b331
second diffusion-stage B-matrix coefficient
-
double b332
second diffusion-stage B-matrix coefficient
-
double b341
second diffusion-stage B-matrix coefficient
-
double b342
second diffusion-stage B-matrix coefficient
-
double alpha1
drift weight vector
-
double alpha2
drift weight vector
-
double alpha3
drift weight vector
-
double alpha4
drift weight vector
-
double c02
stage time node
-
double c03
stage time node
-
double c13
stage time node
-
double c14
stage time node
-
double beta11
diffusion weight vector
-
double beta12
diffusion weight vector
-
double beta13
diffusion weight vector
-
double beta14
diffusion weight vector
-
double beta22
diffusion weight vector
-
double beta23
diffusion weight vector
-
double a021
-
class svStochasticIntegratorRS : public StochasticRKIntegratorBase
- #include <svStochasticIntegratorRS.h>
The svStochasticIntegratorRS class implements the Roessler weak second-order Stratonovich methods RS1 and RS2 for SDEs in the Stratonovich interpretation.
Implementation of the RS1 / RS2 methods of Roessler (2007). It is the weak-order-2 counterpart, for the Stratonovich interpretation, of the Ito weak methods (DRI1, W2Ito1) - giving weak-order capability parity with the Stratonovich strong method (Euler-Heun). Like DRI1 it handles non-commutative noise, using the mixed iterated integral of Roessler eq. (5.2), \(\hat I_{(k,l)} = \hat I_{(k)}\tilde I_{(l)}\) for \(l<k\) and \(-\hat I_{(l)}\tilde I_{(k)}\) for \(k<l\), with three-point \(\hat I\) and two-point \(\tilde I\) (only \(2m-1\) independent random variables per step).
The step is fully explicit and derivative-free (four drift/diffusion stages plus cross-noise stages). See the .cpp for the exact recurrence.
Note
This integrator implements the method exactly as published in Roessler (2007) and is verified for any number m of noise sources - including multiple, commutative and non-commutative, noise - against a paper-faithful reference that reproduces Roessler’s own published weak-error tables (see paperReference/generate_rs_reference.py and test_stochasticIntegratorsPaper.py). It uses vector-valued diffusions b^l and is faithful to the published method; it deliberately does NOT reproduce some in-place reference implementations whose multi-noise cross-terms build their stage states by aliasing (not copying) the working state, and so deviate from the published method for m > 1; only the single-noise case, where the cross-terms vanish, agrees with those.
Warning
Stochastic integration is in beta.
Subclassed by svStochasticIntegratorRS1, svStochasticIntegratorRS2
Public Functions
-
svStochasticIntegratorRS(DynamicObject *dynIn, const RSCoefficients &coefficients)
Constructor taking the dynamic object and the RS 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 RSCoefficients coefficients
RS coefficients.
-
svStochasticIntegratorRS(DynamicObject *dynIn, const RSCoefficients &coefficients)
-
class svStochasticIntegratorRS1 : public svStochasticIntegratorRS
- #include <svStochasticIntegratorRS.h>
RS1: Roessler-Stratonovich weak-order-2 method (deterministic order 2).
Public Functions
-
svStochasticIntegratorRS1(DynamicObject *dyn)
Constructor.
Private Static Functions
-
static RSCoefficients getCoefficients()
Returns the RS1 coefficient tableau.
-
svStochasticIntegratorRS1(DynamicObject *dyn)
-
class svStochasticIntegratorRS2 : public svStochasticIntegratorRS
- #include <svStochasticIntegratorRS.h>
RS2: Roessler-Stratonovich weak-order-2 method (deterministic order 3).
Public Functions
-
svStochasticIntegratorRS2(DynamicObject *dyn)
Constructor.
Private Static Functions
-
static RSCoefficients getCoefficients()
Returns the RS2 coefficient tableau.
-
svStochasticIntegratorRS2(DynamicObject *dyn)