# Continuing a periodic orbit with bifurcationkit from an orbit guess

**URL:** https://discourse.julialang.org/t/continuing-a-periodic-orbit-with-bifurcationkit-from-an-orbit-guess/134506
**Category:** General Usage
**Tags:** bifurcationkit
**Created:** [December 11, 2025, 9:57pm UTC](https://discourse.julialang.org/t/continuing-a-periodic-orbit-with-bifurcationkit-from-an-orbit-guess/134506 "2025-12-11T21:57:01Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![ole-sc](https://avatars.discourse-cdn.com/v4/letter/o/858c86/32.png) [@ole-sc](https://discourse.julialang.org/u/ole-sc)
#### Post date: [December 11, 2025, 9:57pm UTC](https://discourse.julialang.org/t/continuing-a-periodic-orbit-with-bifurcationkit-from-an-orbit-guess/134506/1 "2025-12-11T21:57:02Z")

</div>

I am trying to continue an unstable periodic orbit of a 3-dimensional ODE using BifurcationKit. I found the limit cycle using AUTO, so I know an initial condition on the periodic orbit and the period for some parameters.

I don’t want to continue starting from a Hopf bifurcation, because there are quite a few bifurcations between the Hopf bifurcation and the creation of periodic orbit I am interested in.

I would like to just use the periodic orbit I already found and then continue from there. How can I achieve that?

I tried following the instructions from the page on Collocation, but can’t figure out what is needed to set up the problem without a hopf point

```julia-auto
using Parameters
using BifurcationKit
const BK=BifurcationKit

# Food Chain parameters
@with_kw struct FoodChain
    K::Float64 = 0.98     
    R₀::Float64 = 0.161
    C₀::Float64 = 0.5
    Xc::Float64 = 0.4
    Xp::Float64 = 0.08
    Yc::Float64 = 2.01
    Yp::Float64 = 2.876
end

"Three species food chain model"
function foodchain_ode!(dy, y, par, t=0)
    (;r, K, R₀, C₀, Xc, Xp, Yc, Yp) = par
    dy[1] = y[1]*(1 - y[1]/K) - Xc*Yc*y[1]*y[2]/(R₀ + y[1])
    dy[2] = -Xc*y[2]*(1 - Yc*y[1]/(R₀ + y[1])) - Xp*Yp*y[2]*y[3]/(C₀ + y[2])
    dy[3] = -Xp*y[3]*(1 - Yp*y[2]/(C₀ + y[2]))
    return nothing
end

# period, initial condition and parameters
period = 29.7433
u₀ = [0.5416311329006971, 0.497698403753575, 0.5843089702199039]
pode = FoodChain(Yc = 1.99018524859468) 

# Is this the right way to set up my bifurcation problem?
prob = BK.ODEBifProblem(foodchain_ode!, u₀, pode, (BK.@optic _.Yc);
	    record_from_solution = (x, p; k...) -> ( u = x[1], v = x[2], w = x[3]),)

# -> how to set up PriodicOrbitOCollProblem and orbitguess?
po_coll = BK.PeriodicOrbitOCollProblem(100, 4)
options = BK.NewtonPar() 
orbitguess = ???
solution = BK.newton(po_coll, orbitguess, options)

```

If I determine the periodic orbit, how do I continue the orbit along Yc?  
Thank you for your help!

---

<div class="post-metadata">

### Author: ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)
#### Post date: [December 12, 2025, 8:58am UTC](https://discourse.julialang.org/t/continuing-a-periodic-orbit-with-bifurcationkit-from-an-orbit-guess/134506/2 "2025-12-12T08:58:56Z")

</div>

You can follow this [tutorial](https://bifurcationkit.github.io/BifurcationKitDocs.jl/dev/tutorials/ode/tutorialsCodim2PO/#Periodic-predator-prey-model) which shows how to follow a periodic orbit from a known orbit.

---

<div class="post-metadata">

### Author: ![ole-sc](https://avatars.discourse-cdn.com/v4/letter/o/858c86/32.png) [@ole-sc](https://discourse.julialang.org/u/ole-sc)
#### Post date: [December 12, 2025, 9:57am UTC](https://discourse.julialang.org/t/continuing-a-periodic-orbit-with-bifurcationkit-from-an-orbit-guess/134506/3 "2025-12-12T09:57:32Z")

</div>

Thank you, that worked. I guess, I just didn’t find the right tutorial.
