# Continuation of Fold of periodic orbits

Continuation of Fold of POs is a recent addition. It has not been thoroughly tested.

In this page, we explain how to perform continuation of Fold points and detect the associated codim 2 bifurcations.

### List of detected codim 2 bifurcation points

Bifurcation | symbol used |
---|---|

Cusp | cusp |

Strong resonance 1:1 bifurcation | R1 |

Fold / Flip | foldFlip |

Fold / Neimark-Sacker | foldNS |

In a nutshell, all you have to do (see below) is to call `continuation(br, ind_bif, lens2)`

to continue the bifurcation point stored in `br.specialpoint[ind_bif]`

and set proper options.

## Fold continuation

The continuation of Fold bifurcation points is based on a **Minimally Augmented**^{[Govaerts]} formulation which is an efficient way to detect singularities (see Fold / Hopf Continuation). All the methods (see Periodic orbits computation) for computing periodic orbits are compatible with this algorithm. In particular, you can perform these computations in large dimensions.

### Detection of codim 2 bifurcation points

You can detect the following codim 2 bifurcation points by using the keyword argument `detect_codim2_bifurcation`

in the method `continuation`

- the detection of Cusp (Cusp) is done by the detection of Fold bifurcation points along the curve of Folds by monitoring the parameter component of the tangent.
- the detection the above bifurcation points is done by monitoring the number of eigenvalues $\lambda$ such that $\Re\lambda > \min\limits_{\nu\in\Sigma(dF)}|\Re\nu|$ and $\Im\lambda > \epsilon$ where $\epsilon$ is the Newton tolerance.

## Setting the jacobian

In order to apply the newton algorithm to the Fold functional, one needs to invert the jacobian. This is not completely trivial as one must compute this jacobian and then invert it. You can select the following jacobians for your computations (see below):

- [Default] for
`jacobian_ma = :autodiff`

, automatic differentiation is applied to the Fold functional and the matrix is then inverted using the provided linear solver. In particular, the jacobian is formed. This is very well suited for small dimensions (say < 100) - for
`jacobian_ma = :finiteDifferences`

, same as`jacobian_ma = :autodiff`

but the jacobian is computed using finite differences. - for
`jacobian_ma = :minaug`

, a specific procedure for evaluating the jacobian and inverting it (without forming the jacobian!) is used. This is well suited for large dimensions.

## Codim 2 continuation

To compute the codim 2 curve of Fold points of periodic orbits, one can call `continuation`

with the following options

`BifurcationKit.continuation`

— Function```
continuation(br, ind_bif, lens2)
continuation(
br,
ind_bif,
lens2,
options_cont;
prob,
start_with_eigen,
detect_codim2_bifurcation,
kwargs...
)
```

Codimension 2 continuation of Fold / Hopf points. This function turns an initial guess for a Fold / Hopf point into a curve of Fold / Hopf points based on a Minimally Augmented formulation. The arguments are as follows

`br`

results returned after a call to continuation`ind_bif`

bifurcation index in`br`

`lens2`

second parameter used for the continuation, the first one is the one used to compute`br`

, e.g.`getlens(br)`

`options_cont = br.contparams`

arguments to be passed to the regular continuation

**Optional arguments:**

`bdlinsolver`

bordered linear solver for the constraint equation`update_minaug_every_step`

update vectors`a, b`

in Minimally Formulation every`update_minaug_every_step`

steps`start_with_eigen = false`

whether to start the Minimally Augmented problem with information from eigen elements`detect_codim2_bifurcation ∈ {0,1,2}`

whether to detect Bogdanov-Takens, Bautin and Cusp. If equals`1`

non precise detection is used. If equals`2`

, a bisection method is used to locate the bifurcations.`kwargs`

keywords arguments to be passed to the regular continuation

where the parameters are as above except that you have to pass the branch `br`

from the result of a call to `continuation`

with detection of bifurcations enabled and `index`

is the index of Hopf point in `br`

you want to refine.

For ODE problems, it is more efficient to use the Matrix based Bordered Linear Solver passing the option `bdlinsolver = MatrixBLS()`

It is recommended that you use the option `start_with_eigen = true`

where `br`

is a branch of periodic orbits and the options are as above except with have an additional parameter axis `lens2`

which is used to locate the bifurcation points.

## References

- Govaerts
Govaerts, Willy J. F. Numerical Methods for Bifurcations of Dynamical Equilibria. Philadelphia, Pa: Society for Industrial and Applied Mathematics, 2000.