LTISDEModel

class probnum.filtsmooth.LTISDEModel(driftmatrix, force, dispmatrix, diffmatrix)[source]

Bases: probnum.filtsmooth.LinearSDEModel

Linear time-invariant continuous Markov models of the form dx = [F x(t) + u] dt + L dBt. In the language of dynamic models, x(t) : state process F : drift matrix u : forcing term L : dispersion matrix. Bt : Brownian motion with constant diffusion matrix Q.

Parameters:
  • driftmatrix (np.ndarray, shape=(n, n)) – This is F. It is the drift matrix of the SDE.
  • force (np.ndarray, shape=(n,)) – This is U. It is the force vector of the SDE.
  • dispmatrix (np.ndarray, shape(n, s)) – This is L. It is the dispersion matrix of the SDE.
  • diffmatrix (np.ndarray, shape=(s, s)) – This is the diffusion matrix Q of the Brownian motion driving the SDE.

Notes

It assumes Gaussian initial conditions (otherwise it is no Gauss-Markov process).

Attributes Summary

diffusionmatrix Evaluates Q.
dispersionmatrix
driftmatrix
force
ndim Spatial dimension (utility attribute).

Methods Summary

chapmankolmogorov(start, stop, step, …) Solves Chapman-Kolmogorov equation from start to stop via step.
dispersion(time, state, **kwargs) Evaluates l(t, x(t)) = L(t).
drift(time, state, **kwargs) Evaluates f(t, x(t)) = F(t) x(t) + u(t).
jacobian(time, state, **kwargs) maps t -> F(t)
sample(start, stop, step, initstate, **kwargs) Samples from initstate at start to stop with stepsize step.

Attributes Documentation

diffusionmatrix

Evaluates Q.

dispersionmatrix
driftmatrix
force
ndim

Spatial dimension (utility attribute).

Methods Documentation

chapmankolmogorov(start, stop, step, randvar, **kwargs)[source]

Solves Chapman-Kolmogorov equation from start to stop via step.

For LTISDEs, there is a closed form solutions to the ODE for mean and kernels (see super().chapmankolmogorov(…)). We exploit this for [(stop - start)/step] steps.

References

Eq. (8) in http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.390.380&rep=rep1&type=pdf and Eq. 6.41 and Eq. 6.42 in Applied SDEs.

dispersion(time, state, **kwargs)

Evaluates l(t, x(t)) = L(t).

drift(time, state, **kwargs)

Evaluates f(t, x(t)) = F(t) x(t) + u(t).

jacobian(time, state, **kwargs)

maps t -> F(t)

sample(start, stop, step, initstate, **kwargs)

Samples from initstate at start to stop with stepsize step.

Start, stop and step lead to a np.arange-like interface. Returns a single element at the end of the time, not the entire array!