TransportMaps.Distributions.Examples.Lorenz63.Lorenz63Distributions

Module Contents

Classes

Lorenz63DynamicsMap

Defines the evolution of the dynamics.

Lorenz63ForwardEulerMap

Defines the evolution of the Lorenz-63 dynamics for one forward Euler step.

Lorenz63MultipleStepsForwardEulerMap

Defines the evolution of the dynamics for \(n\) forward Euler steps.

Lorenz63ForwardEulerDistribution

Defines the Hidden Markov Chain distribution defined by the Lorenz-63 dynamics.

class TransportMaps.Distributions.Examples.Lorenz63.Lorenz63Distributions.Lorenz63DynamicsMap(sigma=10.0, beta=8.0 / 3.0, rho=28.0)[source]

Bases: TransportMaps.Maps.Map

Defines the evolution of the dynamics.

Evaluates the right hand side of the Lorenz-63 system:

\[\begin{split}\begin{cases} \dot{x} = \sigma ( y - x ) & \\ \dot{y} = x (\rho - z) - y & \\ \dot{z} = xy - \beta z & \end{cases}\end{split}\]
__init__(sigma=10.0, beta=2.6666666666666665, rho=28.0)[source]
Parameters:
  • sigma (foat) – \(\sigma\)

  • beta (foat) – \(\beta\)

  • rho (foat) – \(\rho\)

property sigma[source]
property beta[source]
property rho[source]
static _extract_state(u)[source]
evaluate(u, *args, **kwargs)[source]

[Abstract] Evaluate the map \(T\) at the points \({\bf x} \in \mathbb{R}^{m \times d_x}\).

Parameters:
  • x (ndarray [\(m,d_x\)]) – evaluation points

  • precomp (dict) – dictionary of precomputed values

  • idxs_slice (slice) – if precomputed values are present, this parameter indicates at which of the points to evaluate. The number of indices represented by idxs_slice must match x.shape[0].

Returns:

(ndarray [\(m,d_y\)]) – transformed points

Raises:

NotImplementedError – to be implemented in sub-classes

grad_x(u, *args, **kwargs)[source]

[Abstract] Evaluate the gradient \(\nabla_{\bf x}T\) at the points \({\bf x} \in \mathbb{R}^{m \times d_x}\).

Parameters:
  • x (ndarray [\(m,d_x\)]) – evaluation points

  • precomp (dict) – dictionary of precomputed values

  • idxs_slice (slice) – if precomputed values are present, this parameter indicates at which of the points to evaluate. The number of indices represented by idxs_slice must match x.shape[0].

Returns:

(ndarray [\(m,d_y,d_x\)]) – transformed points

Raises:

NotImplementedError – to be implemented in sub-classes

hess_x(u, *args, **kwargs)[source]

[Abstract] Evaluate the Hessian \(\nabla^2_{\bf x}T\) at the points \({\bf x} \in \mathbb{R}^{m \times d_x}\).

Parameters:
  • x (ndarray [\(m,d_x\)]) – evaluation points

  • precomp (dict) – dictionary of precomputed values

  • idxs_slice (slice) – if precomputed values are present, this parameter indicates at which of the points to evaluate. The number of indices represented by idxs_slice must match x.shape[0].

Returns:

(ndarray [\(m,d_y,d_x,d_x\)]) – transformed points

Raises:

NotImplementedError – to be implemented in sub-classes

action_hess_x(u, du, *args, **kwargs)[source]

[Abstract] Evaluate the action of the Hessian \(\langle\nabla^2_{\bf x}T,\delta{\bf x}\rangle\) at the points \({\bf x} \in \mathbb{R}^{m \times d_x}\).

Parameters:
  • x (ndarray [\(m,d_x\)]) – evaluation points

  • dx (ndarray [\(m,d_x\)]) – direction on which to evaluate the Hessian

  • precomp (dict) – dictionary of precomputed values

  • idxs_slice (slice) – if precomputed values are present, this parameter indicates at which of the points to evaluate. The number of indices represented by idxs_slice must match x.shape[0].

Returns:

(ndarray [\(m,d_y,d_x\)]) – transformed points

Raises:

NotImplementedError – to be implemented in sub-classes

class TransportMaps.Distributions.Examples.Lorenz63.Lorenz63Distributions.Lorenz63ForwardEulerMap(dt, sigma=10.0, beta=8.0 / 3.0, rho=28.0)[source]

Bases: TransportMaps.Maps.ODEs.AutonomousForwardEulerMap

Defines the evolution of the Lorenz-63 dynamics for one forward Euler step.

Evaluates the Euler step of the Lorenz-63 system:

\[\begin{split}\begin{cases} x_{n+1} = x_n + \Delta t \cdot \sigma ( y_n - x_n ) & \\ y_{n+1} = y_n + \Delta t \cdot x_n (\rho - z_n) - y_n & \\ z_{n+1} = z_n + \Delta t \cdot x_n y_n - \beta z_n & \end{cases}\end{split}\]
__init__(dt, sigma=10.0, beta=2.6666666666666665, rho=28.0)[source]
Parameters:
  • dt (float) – step size \(\Delta t\)

  • sigma (foat) – \(\sigma\)

  • beta (foat) – \(\beta\)

  • rho (foat) – \(\rho\)

property sigma[source]
property beta[source]
property rho[source]
class TransportMaps.Distributions.Examples.Lorenz63.Lorenz63Distributions.Lorenz63MultipleStepsForwardEulerMap(n, dt, sigma=10.0, beta=8.0 / 3.0, rho=28.0)[source]

Bases: TransportMaps.Maps.ListCompositeMap

Defines the evolution of the dynamics for \(n\) forward Euler steps.

Evaluates \(n\) times the Euler step of the Lorenz-63 system:

\[\begin{split}\begin{array}{c} x_{k} \\ y_{k} \\ z_{k} \end{array} \mapsto \begin{array}{c} x_k + \Delta t \cdot \sigma ( y_k - x_k ) \\ y_k + \Delta t \cdot x_k (\rho - z_k) - y_k \\ z_k + \Delta t \cdot x_k y_k - \beta z_k \end{array}\end{split}\]
__init__(n, dt, sigma=10.0, beta=2.6666666666666665, rho=28.0)[source]
Parameters:
  • n (int) – number \(n\) of Euler steps.

  • dt (float) – step size \(\Delta t\)

  • sigma (foat) – \(\sigma\)

  • beta (foat) – \(\beta\)

  • rho (foat) – \(\rho\)

property n[source]
property dt[source]
property sigma[source]
property beta[source]
property rho[source]
class TransportMaps.Distributions.Examples.Lorenz63.Lorenz63Distributions.Lorenz63ForwardEulerDistribution(n, dt, sigma, beta, rho, pi_init, pi_dyn, obs_map, pi_noise)[source]

Bases: TransportMaps.Distributions.Decomposable.SequentialInferenceDistributions.SequentialHiddenMarkovChainDistribution

Defines the Hidden Markov Chain distribution defined by the Lorenz-63 dynamics.

For \({\bf u} = [x, y, z]^\top\) and the index sets \(\Lambda={in : i=0,\ldots}\) and \(\Xi \subset \Lambda\) the model is defined by

\[\begin{split}\begin{cases} {\bf u}_{k+n} = g({\bf u}_k) + \varepsilon_{\text{dyn}} & \text{for } k \in \Lambda \\ {\bf y}_{k+n} &= h({\bf u}_{k+n}) + \varepsilon_{\text{noise}} & \text{for } k+n \in \Xi \;, \end{cases}\end{split}\]

where \(g:{\bf u}_k \mapsto {\bf u}_{k+n}\) is the map corresponding to \(n\) Euler steps of the discretized dynamics with time step \(\Delta t\), \(h\) is the observation operator, \(\varepsilon_{\text{dyn}} \sim \pi_{\text{dyn}}\) is the dynamics noise, \(\varepsilon_{\text{noise}} \sim \pi_{\text{noise}}\) is the observational noise and the initial conditions \({\bf u}_0\) are distributed according to \(\pi_{\text{init}}\).

property n[source]
property dt[source]
property sigma[source]
property beta[source]
property rho[source]
property t[source]
property t_obs[source]
property xs[source]
property ys[source]
step(y, x=None)[source]

Add a step to the hidden Markov Chain.

Parameters:
  • y – observation. None if missing.

  • x – state if known (for diagnostic)