IBM

class probnum.diffeq.IBM(ordint, spatialdim, diffconst, precond_step=1.0)[source]

Bases: probnum.diffeq.odefiltsmooth.prior.ODEPrior

Integrated Brownian motion of order \(q\) prior.

The integrated Brownian motion prior is represented through the LTI SDE

\[dX(t) = F X(t) dt + L dB(t)\]

where for readibility reasons we did not write the preconditioner matrix \(P\); see ODEPrior for explanations.

  • It has driftmatrix \(F\) given by

    \[\begin{split}F = I_d \otimes \tilde F, \quad \tilde F = \begin{pmatrix} 0 & I_q \\ 0 & 0 \end{pmatrix}\end{split}\]

    where the top left zero-vector has \(q\) rows and 1 column.

  • It has dispersion matrix \(L\) given by

    \[L = I_d \otimes \tilde L, \quad \tilde L = \sigma \, e_{q+1}\]

    where \(\sigma\) is the diffusion constant, that is, \(\sigma^2\) is the intensity of each dimension of the \(d\)-dimensional Brownian motion driving the SDE and \(e_{q+1}=(0, ..., 0, 1)\) is the \((q+1)\)-st unit vector.

  • The Brownian motion \(B=B(t)\) driving the SDE has unit diffusion \(Q = I_d\).

Parameters
  • ordint (int) – Order of integration \(q\). The higher \(q\), the higher the order of the ODE filter.

  • spatialdim (int) – Spatial dimension \(d\) of the ordinary differential equation that is to be modelled.

  • diffconst (float) – Diffusion constant \(sigma\) of the stochastic process.

  • precond_step (float) – Expected step size \(h\) used in the ODE filter. This quantity is used for preconditioning, see ODEPrior for a clear explanation. Default is \(h=1\).

Attributes Summary

dimension

Spatial dimension (utility attribute).

dispersionmatrix

driftmatrix

forcevec

inverse_preconditioner

Convenience property to return the readily-computed inverse preconditioner without having to remember abbreviations.

preconditioner

Convenience property to return the readily-computed preconditioner without having to remember abbreviations.

Methods Summary

__call__(arr_or_rv[, start, stop])

Transition a random variable or a realization of one.

discretise(step)

Returns a discrete transition model (i.e.

drift(time, state, **kwargs)

jacobian(time, state, **kwargs)

precond2nordsieck(step)

Computes preconditioner inspired by Nordsieck.

proj2coord(coord)

Projection matrix to \(i\)-th coordinates.

transition_realization(real, start, stop, …)

Transition a realization of a random variable from time \(t\) to time \(t+\Delta t\).

transition_rv(rv, start, stop, **kwargs)

Transition a random variable from time \(t\) to time \(t+\Delta t\).

Attributes Documentation

dimension

Spatial dimension (utility attribute).

dispersionmatrix
driftmatrix
forcevec
inverse_preconditioner

Convenience property to return the readily-computed inverse preconditioner without having to remember abbreviations.

Returns

Inverse preconditioner matrix \(P^{-1}\)

Return type

np.ndarray, shape=(d(q+1), d(q+1))

preconditioner

Convenience property to return the readily-computed preconditioner without having to remember abbreviations.

Returns

Preconditioner matrix \(P\)

Return type

np.ndarray, shape=(d(q+1), d(q+1))

Methods Documentation

__call__(arr_or_rv, start=None, stop=None, **kwargs)

Transition a random variable or a realization of one.

The input is either interpreted as a random variable or as a realization. Accordingly, the respective methods are called: transition_realization() or transition_rv().

Return type

(‘RandomVariable’, typing.Dict)

discretise(step)

Returns a discrete transition model (i.e. mild solution to SDE) using matrix fraction decomposition.

That is, matrices A(h) and Q(h) and vector s(h) such that the transition is

\[x | x_\text{old} \sim \mathcal{N}(A(h) x_\text{old} + s(h), Q(h)) ,\]

which is the transition of the mild solution to the LTI SDE.

drift(time, state, **kwargs)
jacobian(time, state, **kwargs)
precond2nordsieck(step)

Computes preconditioner inspired by Nordsieck.

Computes the matrix \(P\) given by

\[P = I_d \otimes diag (1, h, h^2, ..., h^q)\]

as well as its inverse \(P^{-1}\).

Parameters

step (float) – Step size \(h\) used for preconditioning. If \(h\) is so small that \(h^q! < 10^{-15}\), it is being set to \(h = (\cdot 10^{-15})^{1/q}\).

Return type

(<class ‘numpy.ndarray’>, <class ‘numpy.ndarray’>)

Returns

  • precond (np.ndarray, shape=(d(q+1), d(q+1))) – Preconditioner matrix \(P\).

  • invprecond (np.ndarray, shape=(d(q+1), d(q+1))) – Inverse preconditioner matrix \(P^{-1}\).

proj2coord(coord)

Projection matrix to \(i\)-th coordinates.

Computes the matrix

\[H_i = \left[ I_d \otimes e_i \right] P^{-1},\]

where \(e_i\) is the \(i\)-th unit vector, that projects to the \(i\)-th coordinate of a vector. If the ODE is multidimensional, it projects to each of the \(i\)-th coordinates of each ODE dimension.

Parameters

coord (int) – Coordinate index \(i\) which to project to. Expected to be in range \(0 \leq i \leq q + 1\).

Returns

Projection matrix \(H_i\).

Return type

np.ndarray, shape=(d, d*(q+1))

transition_realization(real, start, stop, **kwargs)

Transition a realization of a random variable from time \(t\) to time \(t+\Delta t\).

For random variable \(x_t\), it returns the random variable defined by

\[x_{t + \Delta t} \sim p(x_{t + \Delta t} | x_t = r) .\]

This is different to transition_rv() which computes the parametrization of \(x_{t + \Delta t}\) based on the parametrization of \(x_t\).

Nb: Think of transition as a verb, i.e. this method “transitions” a realization of a random variable.

Parameters
  • real – Realization of the random variable.

  • start – Starting point \(t\).

  • stop – End point \(t + \Delta t\).

Returns

  • RandomVariable – Random variable, describing the state at time \(t + \Delta t\) based on realization at time \(t\).

  • dict – Additional information in form of a dictionary, for instance the cross-covariance in the prediction step, access to which is useful in smoothing.

See also

transition_rv()

Apply transition to a random variable.

transition_rv(rv, start, stop, **kwargs)

Transition a random variable from time \(t\) to time \(t+\Delta t\).

For random variable \(x_t\), it returns the random variable defined by

\[x_{t + \Delta t} \sim p(x_{t + \Delta t} | x_t) .\]

This returns a random variable where the parametrization depends on the paramtrization of \(x_t\). This is different to transition_rv() which computes the parametrization of \(x_{t + \Delta t}\) based on a realization of \(x_t\).

Nb: Think of transition as a verb, i.e. this method “transitions” a random variable.

Parameters
  • rv – Realization of the random variable.

  • start – Starting point \(t\).

  • stop – End point \(t + \Delta t\).

Returns

  • RandomVariable – Random variable, describing the state at time \(t + \Delta t\) based on realization at time \(t\).

  • dict – Additional information in form of a dictionary, for instance the cross-covariance in the prediction step, access to which is useful in smoothing.

See also

transition_realization()

Apply transition to a realization of a random variable.