Юлия интегрирует дифференциальные уравнения: Ошибка метода: нет соответствия метода - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь векторное дифференциальное уравнение в Юлии.Но я застрял в следующем предупреждении об ошибке:

MethodError: нет подходящего метода hDerivative (:: Array {Float64,1}, :: Nothing,> :: Float64) Ближайшие кандидаты: hDerivative (:: Any, :: Any) в In [8]: 3 hDerivative (:: Any) в In [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 Ответ

0 голосов
/ 28 декабря 2018

@ Комментарий 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...