Julia积分微分方程:MethodError:没有方法匹配

时间:2018-12-27 18:58:18

标签: julia differential-equations

我正在尝试在Julia中向量微分方程。但是我遇到了以下错误警告:

  

MethodError:没有与hDerivative(:: Array {Float64,1},:: Nothing,> :: Float64)匹配的方法   最接近的候选人是:    hDerivative(:: Any,:: Any)at In [8]:3    位于In [13]:3的hDerivative(:: Any)

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

这是我使用的代码示例:

using DifferentialEquations

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

function hDerivative(h,timederiv)
    timederiv=zeros(Float64,N)
    for i=1:length(h)
        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)

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

@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)
        timeseriv[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)