# Bifurcation Problem

## Constant delays (DDE)

Consider the system of delay differential equations with constant delays (DDEs)

\[\frac{\mathrm{d}}{\mathrm{d} t} x(t)=\mathbf F\left(x(t), x\left(t-\tau_1\right), \ldots, x\left(t-\tau_m\right); p\right)\]

where the delays $\tau_i>0$ are constant and $p$ is a set of parameters. In order to specify this, we need to provide the vector field and the delays. The delays are provided using a delay function which must return an `AbstractVecor`

```
function mydelays(pars)
[1, pars.tau1]
end
```

where `pars`

are some user defined variables. The vector field is then specified as follows

```
function myF(x, xd, pars)
[
x[1] + xd[2][1]^2,
x[2] + xd[3][2]^2,
]
end
```

where `xd`

is a vector holding `[x(t-d[1]), x(t-d[2])]`

where `d = mydelays(pars)`

. Some simple examples can be found in the tutorials.

The structure `ConstantDDEBifProblem`

encapsulates the bifurcation problem.

## State-dependent delays (SD-DDE)

Consider the system of delay differential equations with state-dependent delays.

\[\frac{\mathrm{d}}{\mathrm{d} t} x(t)=\mathbf F\left(x(t), x\left(t-\tau_1(x(t))\right), \ldots, x\left(t-\tau_m(x(t))\right); p\right)\]

where the delays $\tau_i>0$ are functions of $x(t)$ and $p$ is a set of parameters. The only difference with the previous case is the specification of the delay function which now depends on `x`

```
function mydelays(x, pars)
[
1 + x[1]^2,
2 + x[2]^2
]
end
```

The structure `SDDDEBifProblem`

encapsulates the bifurcation problem.

A more elaborate problem would be to allow $\tau_i$ to depend on the history of $x(\theta+t)$ for $\theta\in[-\tau_{max},0]$ and not just on the current value of $x(t)$. This is not implemented yet.