HamiltonianContinuation.jl is a Julia package for the numerical continuation and bifurcation analysis of equilibria and periodic orbits in Hamiltonian dynamical systems.
The package is designed for computational studies of nonlinear dynamical systems, with an emphasis on high-performance numerical continuation, stability analysis, and the detection and continuation of bifurcations.
HamiltonianContinuation provides tools for:
- Numerical continuation of equilibrium branches.
- Numerical continuation of periodic-orbit branches.
- Detection and continuation of equilibrium bifurcations.
- Detection and continuation of limit points.
- Detection and continuation of branch points.
- Detection and continuation of flip (period-doubling) bifurcations.
- Stability analysis through eigenvalues and Floquet multipliers.
- Multiple-shooting methods for periodic orbits.
- Taylor-series-based numerical integration.
- Poincaré sections and maps.
- Memory-efficient repeated integrations for periodic-orbit continuation.
The package is built around Julia's type system and is intended to support large continuation calculations where numerical objects are repeatedly updated in memory.
From the Julia package manager:
using Pkg
Pkg.add("HamiltonianContinuation")Or from the Julia REPL:
] add HamiltonianContinuation
For the development version:
] add https://github.com/LeosEquation/HamiltonianContinuation.jlLoad the package with:
using HamiltonianContinuationThe main continuation routines are:
EquilibriaContinuation(...)
OrbitContinuation(...)
LPContinuation(...)
BPContinuation(...)
FPContinuation(...)where:
EquilibriaContinuationperforms continuation of equilibrium branches.OrbitContinuationperforms continuation of periodic orbits.LPContinuationperforms continuation from limit points.BPContinuationperforms continuation from branch points.FPContinuationperforms continuation from flip (period-doubling) points.
The continuation routines return typed objects containing the computed branch and the associated bifurcation information.
HamiltonianContinuation separates the numerical continuation algorithms from the objects used to store their results.
HamiltonianEquilibriumBranchstores the data associated with a continued equilibrium branch, including equilibrium coordinates, energy, stability information, and detected bifurcation points.
HamiltonianPeriodicBranchstores the data associated with a continued family of periodic orbits, including orbit information, period, and Floquet stability data.
HamiltonianLimitPoint
HamiltonianLimitPointBranchrepresent detected limit points and the branches continued from them.
HamiltonianBranchPoint
HamiltonianBranchPointBranchrepresent detected branch points and the branches continued from them.
HamiltonianFlipPoint
HamiltonianFlipPointBranchrepresent detected flip (period-doubling) bifurcations of periodic orbits and the branches continued from them.
Equilibrium branches are computed using numerical continuation combined with Newton correction.
The stability of equilibria is determined from the eigenvalues of the linearized dynamical system. Singular points detected along a branch can be stored and subsequently used to initiate dedicated bifurcation continuation procedures.
Periodic orbits are computed using a multiple-shooting formulation. The resulting nonlinear system is corrected using Newton's method.
The stability of periodic orbits is analyzed through the monodromy matrix and its Floquet multipliers.
For Hamiltonian systems, the symplectic structure imposes constraints on the Floquet spectrum. These properties can be exploited when analyzing the stability and bifurcations of periodic solutions.
HamiltonianContinuation uses Taylor-series-based numerical integration for the repeated integrations required by continuation and multiple-shooting algorithms.
Periodic-orbit continuation can require thousands of integrations in a single computation. For calculations where only the final state is required, specialized integration routines avoid storing intermediate integration steps and return the final result directly, substantially reducing memory usage and computational overhead.
HamiltonianContinuation provides functionality for constructing and evaluating Poincaré sections and maps.
These tools can be used to investigate:
- periodic orbits,
- invariant structures,
- resonances,
- stability,
- bifurcations,
- and the local phase-space structure surrounding periodic solutions.
The package is organized according to the main dynamical objects and continuation procedures.
HamiltonianContinuation/
├── Project.toml
├── Manifest.toml
├── src/
│ ├── HamiltonianContinuation.jl
│ │
│ ├── objects/
│ │ └── ...
│ │
│ ├── equilibria/
│ │ ├── equilibria.jl
│ │ ├── eqbranchswitching.jl
│ │ ├── eqcontinuation.jl
│ │ ├── eqfinding.jl
│ │ └── eqsystem.jl
│ │
│ ├── limitpoint/
│ │ └── ...
│ │
│ ├── branchpoint/
│ │ └── ...
│ │
│ ├── orbits/
│ │ └── ...
│ │
│ └── flippoint/
│ └── ...
│
└── test/
└── ...
The source tree is divided into separate components for equilibria, periodic orbits, and bifurcation-specific continuation algorithms.
HamiltonianContinuation relies on the following Julia packages:
- TaylorIntegration.jl — Taylor-series-based numerical integration.
- TaylorSeries.jl — Taylor polynomial arithmetic.
- PeriodicSchurDecompositions.jl — periodic Schur decomposition and Floquet analysis.
LinearAlgebra— linear algebra functionality from the Julia standard library.Printf— formatted output from the Julia standard library.
A customized development version of TaylorIntegration.jl is currently used for specialized high-performance integrations required by the periodic-orbit continuation algorithms.
The customized version is maintained in a fork of the original repository while these modifications are being developed and evaluated.
Clone the repository:
git clone https://github.com/LeosEquation/HamiltonianContinuation.jl.git
cd HamiltonianContinuation.jlActivate and instantiate the Julia environment:
using Pkg
Pkg.activate(".")
Pkg.instantiate()To run the test suite:
Pkg.test()or from the package manager:
] test
HamiltonianContinuation currently uses a customized development version of TaylorIntegration.jl.
The modifications primarily target repeated integrations required by periodic-orbit continuation, where storing intermediate integration steps can represent a significant computational and memory overhead.
The customized implementation provides specialized functionality for integrations where only the final state is required, together with additional functionality needed by the continuation algorithms.
These modifications are maintained separately from HamiltonianContinuation to preserve the separation between the numerical integration infrastructure and the continuation algorithms themselves.
HamiltonianContinuation is intended for computational studies of nonlinear Hamiltonian systems, particularly problems where continuation requires a large number of high-accuracy numerical integrations.
Potential applications include:
- Hamiltonian dynamical systems.
- Nonlinear dynamics.
- Numerical bifurcation analysis.
- Equilibrium continuation.
- Periodic-orbit continuation.
- Floquet stability analysis.
- Poincaré maps and sections.
- Resonances and invariant structures.
- Phase-space exploration.
The package was initially developed in the context of low-dimensional Hamiltonian systems and is being designed with extensibility toward broader continuation problems in mind.
HamiltonianContinuation is currently under active development.
The core numerical continuation algorithms are being organized into a reusable Julia package, while the public API, documentation, tests, and examples are progressively being expanded.
The current implementation is primarily focused on Hamiltonian systems with low-dimensional reduced phase spaces, with particular emphasis on high-accuracy and high-performance repeated integrations.
If you use HamiltonianContinuation in academic work, please cite the associated research work:
@software{HamiltonianContinuation,
author = {Mayorga López, Leonel},
title = {HamiltonianContinuation.jl},
year = {2026},
url = {https://github.com/LeosEquation/HamiltonianContinuation.jl}
}A formal citation entry will be provided once the associated research work is published.
HamiltonianContinuation.jl is released under the MIT License.
See LICENSE for details.