conatus.expert.PeriodicOrbitProblem

class conatus.expert.PeriodicOrbitProblem(system, parameter, mesh, *, par=None)[source]

Bases: object

Collocation equations of periodic orbits of system in the free parameter parameter.

Parameters:
  • system (DynamicalSystem)

  • parameter (str)

  • mesh (CollocationMesh)

  • par (Mapping[str, float] | None)

explain()[source]

Unknowns and equations of the collocation problem.

Return type:

str

set_mesh(mesh)[source]

Install a mesh (Lagrange/Gauss tables, number of node unknowns).

Parameters:

mesh (CollocationMesh)

Return type:

None

split(z)[source]

(node values (npts, n), period T, parameter p) from z.

Parameters:

z (ndarray)

pars(p)[source]

Parameter values of the system with the continuation parameter set to p.

Parameters:

p (float)

Return type:

dict

colloc_values(U)[source]

u and du/dτ at the collocation points, (ntst, m, n) each.

Parameters:

U (ndarray)

Return type:

tuple[ndarray, ndarray]

set_reference(U)[source]

Reference orbit of the integral phase condition (its τ-derivative is stored).

Parameters:

U (ndarray)

Return type:

None

residual(z)[source]

Collocation equations, periodicity u(1) = u(0) and the phase condition.

Parameters:

z (ndarray)

Return type:

ndarray

jacobian(z, with_p=True)[source]

Sparse Jacobian of residual in (nodes, T[, p]) (exact J at the collocation points).

Parameters:
  • z (ndarray)

  • with_p (bool)

Return type:

csr_matrix

monodromy(z)[source]

Monodromy matrix (renormalized product) and log of the scale factor removed.

Parameters:

z (ndarray)

Return type:

tuple[ndarray, float]

multipliers(z)[source]

Floquet multipliers (sorted by decreasing modulus), |μ_triv − 1| and the trivial index.

Parameters:

z (ndarray)

Return type:

tuple[ndarray, float, int]

floquet_vector(z, target)[source]

Eigenvector of the monodromy for the multiplier closest to target, propagated to every node (rows = nodes), real part if the multiplier is real.

Parameters:
  • z (ndarray)

  • target (complex)

Return type:

ndarray

interpolate(U, t)[source]

u(τ) at arbitrary τ ∈ [0, 1] from the collocation polynomial.

Parameters:
  • U (ndarray)

  • t (ndarray)

Return type:

ndarray

equidistributed_mesh(U)[source]

New mesh equidistributing |u^(ncol)|^(1/(ncol+1)) (AUTO-style), same ntst, ncol.

Parameters:

U (ndarray)

Return type:

CollocationMesh

remesh(z, mesh, t=None)[source]

Interpolate z (and a tangent t) onto mesh and install it; returns (z_new, t_new).

Parameters: