在特定点输出DifferentialEquations.jl

问题描述 投票:0回答:1

我试图使用Julia的DifferentialEquations.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点,我不知道它是如何决定的。我的问题是,如果我想在0到100之间生成20个点?

julia differential-equations
1个回答
2
投票

The ODE tutorial section on "Controlling the Solvers"演示使用saveat为此目的。示威是:

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

在你的例子中将保存为0.0,0.1,......在下面,注意到:

更一般地,saveat可以是要保存的任何时间点集合。

因此,例如,我们可以使用save at仅在t = 30,60和78保存,如下所示:

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

这些例子应该让你朝着正确的方向前进。有关更多详细信息,请参阅the Output Controls section of the documentation

© www.soinside.com 2019 - 2024. All rights reserved.