conatus.expert.propagator

conatus.expert.propagator(op, t0, T, steps, scheme, backend='cpu')[source]

Φ mapping state coefficients at t0 to state coefficients at t0 + T (returned on host).

period and harmonics (dict m -> B_m, B(t) = sum_m e^{2 pi i m t / period} B_m), such as conatus.growth.periodic.PeriodicOperator.

The step is dt = T / steps exactly, so the output time is never rounded (a rounded or zero horizon gives wrong gains without any error). T > 0 is required.

Same scheme and arithmetic class as stepping the unit states one step at a time (the step-by-step reference is kept as a test oracle, equal to round-off): Φ is the ordered product of the one-step maps S(t_k), t_k = t0 + k dt. Each S(t_k) is assembled from the harmonics of the step (step_harmonics, degree checked to round-off), then the maps are multiplied in batches by pairwise batched products. No Python loop over time steps: Python only loops over batches of steps and over log2(batch) levels.

Parameters:
  • op (object)

  • t0 (float)

  • T (float)

  • steps (int)

  • scheme (str)

  • backend (str)

Return type:

ndarray