Я попытался поиграться с этим примером в документации Джулии. Моя попытка состояла в том, чтобы разделить клетку на две части, каждая из которых содержит половину количества белка.
using OrdinaryDiffEq
const α = 0.3
function f(du,u,p,t)
for i in 1:length(u)
du[i] = α*u[i]/length(u)
end
end
function condition(u,t,integrator) # Event when event_f(u,t) == 0
1-maximum(u)
end
function affect!(integrator)
u = integrator.u
idxs = findall(x->x>=1-eps(eltype(u)),u)
resize!(integrator,length(u)+length(idxs))
u[idxs] ./ 2
u[end-idxs:end] = 0.5
nothing
end
callback = ContinuousCallback(condition,affect!)
u0 = [0.2]
tspan = (0.0,10.0)
prob = ODEProblem(f,u0,tspan)
sol = solve(prob,Tsit5(),callback=callback)
Я получаю ошибку: MethodError: no method matching -(::Int64, ::Array{Int64,1})
. Я знаю, что есть проблема с idxs = findall(x->x>=1-eps(eltype(u)),u)
, и я пытался поставить точку между 1 и eps, но это не помогло. Я использую Юлию 1.1.1.