Normal form of the Cusp bifurcation

We follow the paper[Kuznetsov] and consider a Cauchy problem

\[\dot x=\mathbf F(x,p).\]

We denote by $\mathbf L$ the jacobian of $\mathbf F$ at the bifurcation point $(x_0,p_0)$. We choose a basis such that:

\[\mathbf L q=0, \quad \mathbf L^{T} p=0, \quad \langle p, q\rangle=1.\]

Under some conditions, $x(t)\approx x_0+ w(t)q$ where $w$ satisfies the normal form:

\[\dot{w}=c w^{3}+O\left(w^{4}\right).\tag{E}\]

Normal form computation

The normal form (E) can be automatically computed as follows

geNormalForm(br::ContResult, ind_bif::Int ; verbose = false, ζs = nothing, lens = br.param_lens)

br is a branch computed after a call to continuation with detection of bifurcation points enabled and ind_bif is the index of the bifurcation point on the branch br. The above call returns a point with information needed to compute the bifurcated branch. For more information about the optional parameters, we refer to getNormalForm. The result returns the following:

mutable struct Cusp{Tv, Tpar, Tlens, Tevr, Tevl, Tnf} <: AbstractBifurcationPoint
	"Cusp point"

	"Parameters used by the vector field."

	"Parameter axis used to compute the branch on which this cusp point was detected."

	"Right eigenvector"

	"Left eigenvector"

	"Normal form coefficients"

	"Type of bifurcation"

You should not need to call getNormalForm except if you need the full information about the branch point.


  • Kuznetsov

    Kuznetsov, Yu. A. “Numerical Normalization Techniques for All Codim 2 Bifurcations of Equilibria in ODE’s.” SIAM Journal on Numerical Analysis 36, no. 4 (January 1, 1999): 1104–24.