Байесовское 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).

Что касается байесовской части, посмотрите учебное пособие:

https://turing.ml/dev/tutorials/10-bayesiandiffeq/

Другие вопросы по тегам