在 Julia 中解耦 tspan 和初始时间 t0

Decoupling tspan and initial time, t0, in Julia

我遇到了以下问题:我想表示一个解决方案,其中给出了 (t0,η)。比方说,(t0,η) = (0,1)。但是,我希望看到在整个 (-1,1) 域中表示的图表。

由于 tspan 与我的 t0 有内在联系,我如何让求解器解决给定 t0 的问题,不同 [=] 区间中的初始值14=]?

因此,在给定的示例中,我想观察 (-0.88, 0.88) 中的 ODE,但要解决条件 (t0, y0) = (0,1).

中的问题 例 8(c)
using DifferentialEquations
using Plots

function example2!(dy, y, t, p)
    c1  = p
    dy[1] = c1 * y[1]^3
end

y0 = [1]
p = [1]
tspan = (0, 0.88)
prob2 = ODEProblem(example2!, y0, tspan, p)
sol2 = solve(prob2)

plot(sol2)

编辑:

我与包的创建者就此问题在 github、

上进行了讨论

issue#705

求解器无法智能区分、定位和解决图中的分歧。所以,这个分析现在必须在没有计算机帮助的情况下完成。

这不是编程问题,而是数学问题。您似乎在问如何解决边值问题。一种 ODE,其中不是初始条件,而是一些其他条件。解决方案是使用 shooting method 并将 BVE 转换为 ODE。

作为链接页面的示例,您正在搜索 y'(0)=a 处的初始条件,以便解决方案通过已知条件 y'(5)=30

您需要调用求解器两次,一次针对从 0 到 1 的时间跨度,一次针对从 0 到 -1 的时间跨度。任何有能力的求解器都会正确地将时间间隔的负方向转换为相应的负步长。

然后使用数组运算或通过在一个图中使用相同参数绘制它们来组合两个部分解。