# Bifurcation Problem

## Vector field

The structure BifFunction holds the vector field. If you just pass a function, everything (jacobian, second derivative, ...) will be evaluated using automatic differentiation.

## Bifurcation Problem

The structure BifurcationProblem is the basic holder for a bifurcation problem which holds

• the vector field
• an initial guess
• a set of parameters
• a parameter axis

as well as user defined functions for

• plotting
• recording a indicators about the solution when this oe is too large to save at every step

## Problem modification

In case you want to modify an existing problem, you should use the following method

BifurcationKit.reMakeMethod
reMake(prob; u0, params, lens, recordFromSolution, plotSolution, J, d2F, d3F)


This function allows to change the fields of a problem ::AbstractBifurcationProblem. For example, you can change the initial condition by doing

reMake(prob; u0 = new_u0)

## Example

using BifurcationKit, Setfield
F(x,p) = @. p.a + x^2
# parameters
par = (a = 0., b = 2)
prob = BifurcationProblem(F, zeros(3), par, (@lens _.a))
┌─ Bifurcation Problem with uType Vector{Float64}
├─ inplace:  false
├─ Symmetric: false
└─ Parameter: a