Юлия интегрирует дифференциальные уравнения: Ошибка метода: нет соответствия метода
Я пытаюсь векторное дифференциальное уравнение в Юлии. Но я застрял в следующем предупреждении об ошибке:
MethodError: нет подходящих методов hDerivative(::Array{Float64,1},::Nothing, >::Float64) Ближайшими кандидатами являются: hDerivative(::Any,::Any) в In[8]:3 hDerivative(:: Любой) в В [13]:3
Я в основном не уверен в синтаксисе функции "hDerivative". Я попытался вернуть дифференциал, но также попытался принять "timederiv" в качестве аргумента функции hDerivative, аналогично тому, что я видел в tuturials о дифференциальных уравнениях в Julia, хотя это выглядит немного странно (я привык к 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 ответ
Комментарий @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)