Проблемы с решением ODE

#julia

#джулия

Вопрос:

Я пытаюсь решить типичный пример из пакета DifferentialEquation, согласно руководству с их страницы.

Вот пример:

 using DifferentialEquations
using Plots

function lorenz(t,u, du)
    du[1] = 10.0(u[2]-u[1])
    du[2] = u[1]*(28.0-u[3]) - u[2]
    du[3] = u[1]*u[2] - (8/3)*u[3]
end
   
u0 = [1.0;0.0;0.0]
tspan = (0.0,100.0)
prob = ODEProblem(lorenz,u0,tspan)
sol = solve(prob)
plot(sol,vars=(1,2,3))
  

Тогда я получаю:

ОШИБКА: ошибка загрузки: параметры были проиндексированы, но параметры есть nothing . Вероятно, вы забыли передать параметры в депроблему!

Что здесь не так? Заранее спасибо!

Комментарии:

1. Ваша функция должна возвращать производную du , но я не думаю, что ей нужно принимать ее в качестве аргумента.

2. Вы пытались просто plot(sol) ?

Ответ №1:

Вы могли бы попытаться последовать этому примеру, который основывается на том, что вы сделали:

 using DifferentialEquations
using Plots

function lorenz(du,u,p,t)
 du[1] = p[1]*(u[2]-u[1])
 du[2] = u[1]*(p[2]-u[3]) - u[2]
 du[3] = u[1]*u[2] - p[3]*u[3]
end

u0 = [1.0;0.0;0.0]
tspan = (0.0,100.0)
p = (10.0,28.0,8/3)
prob = ODEProblem(lorenz, u0, tspan,p)
sol = solve(prob)
xyzt = plot(sol, plotdensity=10000,lw=1.5)
xy = plot(sol, plotdensity=10000, vars=(1,2))
xz = plot(sol, plotdensity=10000, vars=(1,3))
yz = plot(sol, plotdensity=10000, vars=(2,3))
xyz = plot(sol, plotdensity=10000, vars=(1,2,3))
plot(plot(xyzt,xyz),plot(xy, xz, yz, layout=(1,3),w=1), layout=(2,1))