Вывод из diffrentialEquations.jl в определенных точках - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь использовать diffrentialEquations.jl от Джулии. Мне удалось заставить это работать, но я хотел бы знать, как произвести вывод в определенные моменты времени. Документы не ясны по этому вопросу, и я не нашел ни одного примера, который это делает. Код, который я сейчас использую, взят из учебника:

using DifferentialEquations
using Plots

function lorenz(du,u,p,t)
 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))

В настоящее время он генерирует 1287 очков, и я не знаю, как он это решает. У меня вопрос: а что, если я хочу сгенерировать 20 точек между промежутками от 0 до 100?

1 Ответ

2 голосов
/ 13 марта 2019

В разделе учебника ODE «Управление решателями» показано использование saveat для этой цели.Демонстрация:

sol = solve(prob,reltol=1e-6,saveat=0.1)

, которая сохранит на уровне 0,0, 0,1, ... в вашем примере.Прямо под этим следует отметить, что:

В общем, saveat может быть любым набором моментов времени для сохранения в.

Так, например, мы можем использовать save всохранить только при t = 30, 60 и 78 следующим образом:

sol = solve(prob,saveat=[30.0,60.0,78.0])

Эти примеры должны направить вас в правильном направлении.Подробнее см. в разделе «Элементы управления выводом» документации .

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...