probnum.problems.zoo.filtsmooth.pendulum(rng, measurement_variance=0.1024, timespan=(0.0, 4.0), step=0.0075, initrv=None, initarg=None)[source]

Filtering/smoothing setup for a (noisy) pendulum.

A non-linear, discretized state space model for a pendulum with unknown forces acting on the dynamics, modeled as Gaussian noise. See e.g. Särkkä, 2013 [1] for more details.

\[\begin{split}\begin{pmatrix} x_1(t_n) \\ x_2(t_n) \end{pmatrix} &= \begin{pmatrix} x_1(t_{n-1}) + x_2(t_{n-1}) \cdot h \\ x_2(t_{n-1}) - g \sin(x_1(t_{n-1})) \cdot h \end{pmatrix} + q_n \\ y_n &\sim \sin(x_1(t_n)) + r_n\end{split}\]

for some step size \(h\) and Gaussian process noise \(q_n \sim \mathcal{N}(0, Q)\) with

\[\begin{split}Q = \begin{pmatrix} \frac{h^3}{3} & \frac{h^2}{2} \\ \frac{h^2}{2} & h \end{pmatrix}\end{split}\]

\(g\) denotes the gravitational constant and \(r_n \sim \mathcal{N}(0, R)\) is Gaussian mesurement noise with some covariance \(R\).

  • rng (Generator) – Random number generator.

  • measurement_variance (FloatLike) – Marginal measurement variance.

  • timespan (Tuple[FloatLike, FloatLike]) – \(t_0\) and \(t_{\max}\) of the time grid.

  • step (FloatLike) – Step size of the time grid.

  • initrv (RandomVariable | None) – Initial random variable.

  • initarg (float | None) – Initial time point of the prior process. Optional. Default is the left boundary of timespan.


  • regression_problemTimeSeriesRegressionProblem object with time points and noisy observations.

  • info – Dictionary containing additional information like the prior process.