Байесовское ODE с Юлией
Я пытался реализовать байесовское ОДУ. В нефтяной промышленности мы используем следующее уравнение для подбора данных по добыче и затем прогнозирования:
Уравнение ODE описывается как:
где 0 <n <1, n и K - параметры, определенные путем подбора исходных производственных данных, в моем случае K равно 0,17, n = 0,87.
Мой исходный код:
using DiffEqFlux, OrdinaryDiffEq, Flux, Optim, Plots, AdvancedHMC
function Arps!(du,u,p,t)
y = u
K,n = p
du = (y * K * y^n)
end
tspan=(1.0,200.0)
tsteps = range(1, 200, length = 200)
u0 = [5505.99]
p=[0.17,0.87]
prob1 = ODEProblem(Arps!,u0,tspan)
sol_ode = solve(prob1,Vern7(),saveat = tsteps)
Не знаю, как решить эту проблему:
MethodError: no method matching iterate(::DiffEqBase.NullParameters)
1 ответ
Вы не передали в ODE никаких параметров.
prob1 = ODEProblem(Arps!,u0,tspan,p)
.
Что касается байесовской части, посмотрите учебное пособие: