【发布时间】:2021-05-03 17:11:50
【问题描述】:
我正在尝试使用 julia 提供的DifferentialEquations.jl,它可以正常工作,直到我尝试在二阶 ODE 上使用它。 例如考虑二阶 ODE
x''(t) = x'(t) + 2* x(t),带初始条件
x'(0) = 0, x(0) = 1
它的解析解为:x(t) = 2/3 exp(-t) + 1/3 exp(2t)。
为了解决这个问题,我运行以下代码:
using DifferentialEquations;
function f_simple(ddu, du, u, p, t)
ddu[1] = du[1] + 2*u[1]
end;
du0 = [0.]
u0 = [1.]
tspan = (0.0,5.0)
prob2 = SecondOrderODEProblem(f_simple, du0, u0, tspan)
sol = solve(prob2,reltol=1e-8, abstol=1e-8);
这样,
sol(3)[2] = 122.57014434362732
而解析解产生 134.50945587649028,所以我在这里有点迷失了。
【问题讨论】:
-
如果您指定一个标准积分器,如
solve(prob2, alg=Tsit5()),它就可以工作。不过,使用您的示例在 github 存储库中打开一个问题可能会很好,因为这里的专业集成商似乎很不精确。 -
这个问题其实作者去年就解决了,见stackoverflow.com/questions/60180865/…,github.com/SciML/DifferentialEquations.jl/issues/523中的cmets。请添加diffeq包的版本。
-
请打开一个问题。
-
我在 GitHub 上打开了一个问题。谢谢大家的帮助,这已经帮助了我很多!
标签: julia differential-equations differentialequations.jl