【问题标题】:Bayesian ODE with Julia贝叶斯 ODE 与 Julia
【发布时间】:2021-01-05 13:35:38
【问题描述】:

我一直在尝试实现贝叶斯 ODE。在石油工业中,我们使用以下等式拟合生产数据然后进行预测:

ODE 方程描述为:

其中 0

我的初始代码:

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) 

【问题讨论】:

    标签: julia ode pde flux.jl


    【解决方案1】:

    您没有将任何参数传递到您的 ODE。 prob1 = ODEProblem(Arps!,u0,tspan,p).

    贝叶斯部分,看教程:

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

    【讨论】:

    • 哦,我忘了包括 p 参数,但是一旦我这样做了: prob1 = ODEProblem(Arps!,u0,tspan,p) sol_ode = solve(prob1,Tsit5(),saveat = tsteps)我收到此错误: MethodError: no method matching ^(::Array{Float64,1}, ::Float64)
    • y 是一个数组。 y = u[1]du[1] = (y * K * y^n).
    猜你喜欢
    • 2019-09-14
    • 2013-04-08
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2012-11-01
    • 2011-12-28
    相关资源
    最近更新 更多