mappy_ds.ContinuousMode#

class mappy_ds.ContinuousMode(name, fun, borders=(), max_interval=20.0, in_trajectory=True, trajectory_dt=0.01, *, method='RK45', rtol=1e-06, atol=1e-09, **solver_options)#

A mode whose evolution follows an autonomous ODE until a border is hit.

Parameters:
namestr

Unique name of the mode.

funSystemFunction

Right-hand side of the ODE, declared with mappy_ds.vector_field().

borderssequence of SystemFunction, optional

Border functions declared with mappy_ds.border(). Integration stops at the first zero crossing of any border (in the direction the border declares). With no borders the mode is the time-max_interval flow map.

max_intervalfloat, optional

Upper bound of the integration time, by default 20.0.

in_trajectorybool, optional

Whether the mode contributes a trajectory segment, by default True.

trajectory_dtfloat, optional

Sampling interval of recorded trajectories, by default 0.01.

method, rtol, atol, **solver_options

Forwarded to scipy.integrate.solve_ivp().

Notes

When the Jacobian or Hessian is requested the variational equations

\[\dot J = D f(\varphi)\, J, \qquad \dot H_{ijk} = \sum_{l,m} (D^2 f)_{ilm} J_{lj} J_{mk} + \sum_l (Df)_{il} H_{ljk}, \qquad \dot P = D f(\varphi)\, P + \partial_p f(\varphi), \qquad \dot M_{ijm} = \sum_{l,r} (D^2 f)_{ilr} J_{lj} P_{rm} + \sum_l (\partial_p Df)_{ilm} J_{lj} + \sum_l (Df)_{il} M_{ljm}\]

are integrated along with the state (\(P = \partial\varphi/\partial p\) when param_keys is given, \(M = \partial^2\varphi/\partial y_0 \partial p\) when mixed_hessian is also set), and the result is corrected for the dependence of the hitting time on the initial state and on the parameters (see the references).

References

Y. Miino, “Mode concept to construct diffeomorphisms representing smooth/non-smooth dynamical systems”, NOLTA, IEICE 15(2), 284–298, 2024.

Properties

border_names

Names of the borders, in the order of borders.

cod_dim

Dimension of the state space the mode ends in.

dom_dim

Dimension of the state space the mode starts in.

Methods

step(y0[, params, jacobian, hessian, ...])

Evolve y0 through the mode; see Mode.step().