Branch switching

The precise definition of the methods is given in Branch switching (branch point) and Branch switching (Hopf point).

(Automatic) branch switching of simple bifurcation points

Unlike other continuation softwares (Auto07p, MatCont, pde2path), BifurcationKit has methods for automatic branch switching where the user is only asked to provide the parameter distance from a point on the bifurcated branch to the bifurcation point. Let us explain this in more detail using the following figure.

Knowing a bifurcation point $X_0 = (x_0,p_0)$ on a branch br, we want to find the bifurcated (red) curve. To this, we need an initial guess $X_1$ on the bifurcated curve. Usually, the tangent $\vec v$ can be found which leaves two parameters δp, ampfactor to be determined. Note that both parameters needs to be small. For example, the default values are δp = ds (ds is in ContinuationPar ) and ampfactor = 0.1.

  • In case of manual branch switching, the user is asked to provide the couple δp, ampfactor. This can be tricky because minute errors in δp, ampfactor can imped newton correction. This is for example used in Lur'e problem for period-doubling with Trapezoid method. Thus, the general method is like
continuation(br, ind_bif, options_cont; 
    δp = 0.1, ampfactor = 0.1,
  • In case of automatic branch switching, the user is only asked to provide δp while ampfactor is internally estimated using the normal form of the bifurcation point. When the user does not pass δp, the value of ds is in ContinuationPar is used. Thus, the general method is like
continuation(br, ind_bif, options_cont; kwargs...)

When the bifurcation diagram is very stiff, automatic branch switching may fail (for example BifurcationKit could return ampfactor=1e6 or ampfactor = 1e-10). In this case, one can override automatic branch switching and specify δp, ampfactor directly as for manual branch switching using

continuation(br, ind_bif, options_cont; 
    δp = 0.1, ampfactor = 0.1,
    override = true,
Manual branch switching

Manual branch switching is automatically used by BifurcationKit when the normal form of the bifurcation point is not implemented (like PD normal form for Trapezoid method). You can force BifurcationKit to use it using the override key word.

Branch switching of non-simple bifurcation points

We refer to Branch switching for more details.

Graph of bifurcations

We provide a graph of bifurcations of equilibria and periodic orbits that can be detected in BifurcationKit. An arrow from say Equilibrium to Hopf means that Hopf bifurcations can be detected while continuing equilibria. Each object of codim 0 (resp. 1) can be continued in one (resp. 2) parameters.

Summary of branching procedures

We collect in the following table the list of automatic branch switching (aBS) functions. Their detailed explanation follows in this page.

functionind-th bif. pointType Tdescription
continuation(br::ContResult{T}, ind::Int; kw...):bp, :ndEquilibriumContaBS from equilibria to equilibria
continuation(br::ContResult{T}, ind::Int, lens2::Lens; kw...):bp, :hopfEquilibriumContFold/Hopf continuation w.r.t. parameters getlens(br) and lens2
continuation(br::ContResult{T}, ind::Int; kw...):bt,:zh,:hhFoldCont,HopfContswitch to Fold/Hopf continuation from Hopf/Fold w.r.t. parameters of codim 2 br
continuation(br::ContResult{T}, ind_hopf::Int, ::ContinuationPar, prob::AbstractPeriodicOrbitProblem):hopfEquilibriumContBranch switching from Hopf point to periodic orbits
continuation(br::ContResult{T}, ind::Int, kw...):bp,:pdPeriodicOrbitContBranch switching from Branch / Period-doubling point of periodic orbits to curve of periodic orbits
continuation(br::ContResult{T}, ind::Int, kw...):gh,:zh,:hhTwoParamContBranch switching from Bautin / Zero-Hopf/ Hopf-Hopf point to curve of Fold/NS of periodic orbits