[ANN] MappyDS.jl: Poincaré maps of hybrid dynamical systems with analytic derivatives

MappyDS.jl is a Julia port of the Python package mappy-ds. It implements the mode concept (Miino, NOLTA IEICE 15(2), 2024): a hybrid/piecewise-smooth system is written as a graph of modes (ODE flows that end on a border, or discrete maps), and the package composes them into a Poincaré map T together with its derivatives.

What you get for a PoincareMap or a plain Diffeomorphism:

  • image_detail(T, y0, p): the image, the Jacobian DT and the Hessian, plus parameter derivatives and mixed second derivatives on request. Flows use the variational equations with the analytic border correction (no AD through the ODE solver); user functions are differentiated with ForwardDiff on SVectors.
  • find_cycle, trace_cycle, trace_cycle_arclength: periodic points and their continuation (natural parameter or pseudo-arclength, with fold / period-doubling / Neimark–Sacker detection).
  • find_local_bf, trace_local_bf, trace_local_bf_arclength: local bifurcation points solved from (Tⁿ(y) − y, det(DTⁿ − e^{iθ}I)) with a fully analytic Jacobian, and their continuation in two parameters (cusps, strong resonances flagged).
  • A Makie extension: plot_trajectory and an interactive plot2d viewer (GLMakie).

Built on OrdinaryDiffEqTsit5, SciMLBase callbacks, SimpleNonlinearSolve, ForwardDiff and StaticArrays. Julia 1.10+.

Docs with five worked examples (Hénon, coupled logistic maps, Izhikevich neuron, forced Duffing and Alpazur oscillators): Home · MappyDS.jl
Repository: GitHub - Yuu-Miino/MappyDS.jl · GitHub
Python package: GitHub - Yuu-Miino/mappy · GitHub

Feedback on the API is welcome: the package is at 0.3 and the API will be frozen for 1.0 once it has settled.