IBM¶

class
probnum.diffeq.
IBM
(ordint: int, spatialdim: int, diffconst: float, precond_step: float = 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 zerovector 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 – Order of integration \(q\). The higher \(q\), the higher the order of the ODE filter.
 spatialdim – Spatial dimension \(d\) of the ordinary differential equation that is to be modelled.
 diffconst – Diffusion constant \(sigma\) of the stochastic process.
 precond_step – 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
diffusionmatrix
Evaluates Q. dimension
Spatial dimension (utility attribute). dispersionmatrix
driftmatrix
force
inverse_preconditioner
Convenience property to return the readilycomputed inverse preconditioner without having to remember abbreviations. preconditioner
Convenience property to return the readilycomputed preconditioner without having to remember abbreviations. Methods Summary
__call__
(arr_or_rv, RandomVariable], start, …)Transition a random variable or a realization of one. 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) 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

diffusionmatrix
¶ Evaluates Q.

dimension
¶ Spatial dimension (utility attribute).

dispersionmatrix
¶

driftmatrix
¶

force
¶

inverse_preconditioner
¶ Convenience property to return the readilycomputed 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 readilycomputed 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: Union[numpy.ndarray, RandomVariable], start: float = None, stop: float = None, **kwargs) > ('RandomVariable', typing.Dict)¶ 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()
ortransition_rv()
.

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)

precond2nordsieck
(step: float) > (<class 'numpy.ndarray'>, <class 'numpy.ndarray'>)¶ 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}\). 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: int) → numpy.ndarray¶ 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 crosscovariance 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 crosscovariance in the prediction step, access to which is useful in smoothing.
See also
transition_realization()
 Apply transition to a realization of a random variable.