Hello,
New to BifurcationKit.jl
here! I have a simple ODE-based model from an article (Fig. 2A in https://www.pnas.org/doi/10.1073/pnas.1419162112), which is known to have three bifurcation points when varied over a parameter m
. The figure is attached:
The parameter is varied between 0 and 1, the dashed branches are unstable, and the solid branches are stable.
However, I am unable to reproduce the bifurcation diagram. The PALC()
algorithm fails to identify the bifurcation points. It does not give out any errors. The code is below:
using BifurcationKit, Plots
# ODE system
function ConwayPerelson_2015(u, p)
(λ, d, β, αL, ρ, a, dL, δ, m, pr, c, λE, bE, KB, dE, KD, μ) = p
T, L, I, V, E = u # The variable V is plotted in the bifurcation diagram
[
λ - d*T - β*V*T,
αL*β*V*T + (ρ - a - dL)*L,
(1 - αL)*β*V*T - δ*I + a*L - m*E*I,
pr*I - c*V,
λE + bE*E*I/(KB + I) - dE*E*I/(KD + I) - μ*E
]
end
# Parameters
params = (
λ = 1E4, d = 0.01, β = 1.5E-8, δ = 1, pr = 2_000, c = 23,
a = 0.001, dL = 0.004, ρ = 0.0045, αL = 1E-6,
λE = 1, bE = 1, KB = 0.1, dE = 2, KD = 5, μ = 2, m = 0.42
)
# Initial guess
u0 = zeros(5)
# Bifurcation problem
prob = BifurcationProblem(ConwayPerelson_2015, u0, params, (@optic _.m);
record_from_solution = (x, p; k...) -> (V = x[4]))
opts = ContinuationPar(p_min = 0.0, p_max = 1.0)
# Solve
br = continuation(prob, PALC(), opts, bothside = true)
Can someone please help me out? Is there a way to ensure that the algorithm does not miss out on identifying the bifurcation points?