Source code for probnum.filtsmooth.statespace.continuous.continuousmodel

"""
Continuous Markov models implicitly defined through SDEs,
dx(t) = f(t, x(t)) dt + l(t, x(t)) dB(t).
"""

import abc

from probnum.filtsmooth.statespace.transition import Transition

__all__ = ["ContinuousModel"]


class ContinuousModel(Transition):
    """
    Markov transition rules in continuous time.

    Such a rule is described by a stochastic differential equation (SDE),

    .. math:: d x_t = f(t, x_t) d t + d w_t

    driven by a Wiener process :math:`w`.

    Todo
    ----
    This should be initializable similarly to :class:`DiscreteGaussianModel`
    (where :meth:`transition_realization` and :meth:`transition_rv` simply raise ``NotImplementedError``).
    This would change a bit of code, though. See Issue #219.
    """

[docs] @abc.abstractmethod def transition_realization(self, real, start, stop, **kwargs): raise NotImplementedError
[docs] @abc.abstractmethod def transition_rv(self, rv, start, stop, **kwargs): raise NotImplementedError
@property @abc.abstractmethod def dimension(self): raise NotImplementedError
[docs] @abc.abstractmethod def drift(self, time, state, **kwargs): raise NotImplementedError
[docs] @abc.abstractmethod def dispersion(self, time, state, **kwargs): raise NotImplementedError
[docs] def jacobian(self, time, state, **kwargs): raise NotImplementedError
@property @abc.abstractmethod def diffusionmatrix(self): raise NotImplementedError