Julia积分微分方程:方法错误:无方法匹配

Julia积分微分方程:方法错误:无方法匹配,julia,differential-equations,Julia,Differential Equations,我在试着用朱莉娅的向量微分方程。但我被以下错误警告卡住了: MethodError:没有与hDerivative匹配的方法(::数组{Float64,1},::Nothing,>::Float64) 最接近的候选人是: 在[8]中的派生(::Any,::Any):3 在[13]中的派生(::Any):3 我基本上不确定函数“hDerivative”的语法。我尝试返回微分,但也尝试将“timederiv”作为函数hDerivative的参数,类似于我在教程中看到的Julia中关于微分方程的内容,尽

我在试着用朱莉娅的向量微分方程。但我被以下错误警告卡住了:

MethodError:没有与hDerivative匹配的方法(::数组{Float64,1},::Nothing,>::Float64) 最接近的候选人是: 在[8]中的派生(::Any,::Any):3 在[13]中的派生(::Any):3

我基本上不确定函数“hDerivative”的语法。我尝试返回微分,但也尝试将“timederiv”作为函数hDerivative的参数,类似于我在教程中看到的Julia中关于微分方程的内容,尽管这看起来有点奇怪(我习惯于python)

这是我使用的代码的一个示例:

使用微分方程
N=10
J=随机数(64,N,N)
g=1
函数hDerivative(h,timederiv)
timederiv=0(浮点64,N)
对于i=1:长度(h)
对于j=1:长度(h)
timederiv[i]=timederiv[i]+J[i,J]*tanh(h[J])
结束
结束
结束
hinit=零(浮点64,N)
tspan=(0.0,1.0)
prob=ODEProblem(hDerivative、hinit、tspan)
解决(问题)

有人能帮我吗?

@LutzL的评论完全正确,这段代码的问题在于它没有定义文档中提到的导数函数。相反,以下代码使用
(du,u,p,t)
表单工作:

using DifferentialEquations

N=10
J=randn(Float64,N,N)
g=1

function hDerivative(timederiv,h,p,t)
    for i=1:length(h)
        timederiv[i] = 0
        for j=1:length(h)
            timederiv[i]=timederiv[i]+J[i,j]*tanh(h[j])            
        end
    end  
end

hinit=zeros(Float64,N)
tspan=(0.0,1.0)
prob = ODEProblem(hDerivative,hinit,tspan)
solve(prob)

根据文档,ODE函数中的参数顺序是函数f(du,u,p,t),返回向量后跟状态向量,可能还有参数和时间。您有不同的顺序和参数数量。如果您认为应该这样做,请参考您正在使用的示例。因此,也许
prob=ODEProblem((du,u,p,t)->hDerivative(u,du),hinit,tspan)
可以工作吗?非常感谢!现在积分器工作了,因为它给出了一个输出。但是,集成后的状态与使用示例代码的初始状态相同(并将“hinit”更改为不同的值)。当我明确地测试medod“hDerivative”时,它不会产生零。所以仍然有一些地方出了问题,我找不到什么。@WouterDevos我编辑了它来解决这个问题。本质上,不是为输出创建新数组,而是用零填充现有数组。