Detection of bifurcation points

The bifurcations are detected during a call to br = continuation(prob, alg, contParams::ContinuationPar; kwargs...) by turning on the following flags:

  • contParams.detect_bifurcation = 2 (for eigenvalue based bifurcations)
  • contParams.detect_event = 2 (for other bifurcations, e.g. inclinations)

Precise detection of bifurcation points using Bisection

Note that the bifurcation points detected when detect_bifurcation = 2 can be a rather crude localization of the true bifurcation points. Indeed, we only signal that, in between two continuation steps which can be large, one (or several) bifurcation has been detected. Hence, we only have a rough idea of where the bifurcation is located, unless your dsmax is very small... This can be improved as follows.

If you choose detect_bifurcation = 3, a bisection algorithm is used to locate the bifurcation points more precisely. It means that we recursively track down the change in stability. Some options in ContinuationPar control this behavior:

  • n_inversion: number of sign inversions in the bisection algorithm
  • max_bisection_steps maximum number of bisection steps
  • tol_bisection_eigenvalue tolerance on the real part of the eigenvalues to detect bifurcation points in the bisection steps
Bisection mode

During the bisection, the eigensolvers are called like eil(J, nev; bisection = true) in order to be able to adapt the solver precision.

List of detected bifurcation points

When continuing a homoclinic orbit, you can detect the following codimension-two bifurcation points by using the option detect_codim2_bifurcation in the method continuation. Under the hood, the detection of these bifurcations is done by using Event detection as explained in Event Handling.

We refer to [DeWitte] for a description of the bifurcations.

Type of bifurcationLabel
Limit cycleLC
Homoclinic to Hyperbolic SaddleHHS
Homoclinic to Saddle-NodeHSN
Neutral saddleNSS
Neutral saddle-focusNSF
Neutral Bi-FocusNFF
Shilnikov-HopfSH
Double Real Stable leading eigenvalueDRS
Double Real Unstable leading eigenvalueDRU
Neutrally-Divergent saddle-focus (Stable)NDS
Neutrally-Divergent saddle-focus (Unstable)NDU
Three Leading eigenvalues (Stable)TLS
Three Leading eigenvalues (Unstable)TLU
Orbit-Flip with respect to the Stable manifoldOFS
Orbit-Flip with respect to the Unstable manifoldOFU
Non-Central Homoclinic to saddle-nodeNCH

Inclination-Flip with respect to the Stable / Unstable manifold is not yet detected.

References

  • DeWitte

    De Witte, Virginie, Willy Govaerts, Yuri A. Kuznetsov, and Mark Friedman. “Interactive Initialization and Continuation of Homoclinic and Heteroclinic Orbits in MATLAB.” ACM Transactions on Mathematical Software 38, no. 3 (April 2012): 1–34. https://doi.org/10.1145/2168773.2168776.