BoundaryValueDiffEq.jl icon indicating copy to clipboard operation
BoundaryValueDiffEq.jl copied to clipboard

README example should use interpolation instead of indexing

Open ErikQQY opened this issue 10 months ago • 5 comments

While trying MIRK solvers and Shooting solvers with example problem in README, the two kinds of solvers gave two different solutions:

using BoundaryValueDiffEq, OrdinaryDiffEq
function simplependulum!(du, u, p, t)
    θ = u[1]
    dθ = u[2]
    du[1] = dθ
    du[2] = -9.81 * sin(θ)
end
function bc!(residual, u, p, t)
    residual[1] = u[end ÷ 2][1] + pi / 2
    residual[2] = u[end][1] - pi / 2
end
tspan = (0.0, pi / 2)
prob = BVProblem(simplependulum!, bc!, [pi / 2, pi / 2], tspan)
mirk_sol = solve(prob, MIRK4(), dt = 0.05)
shooting_sol = solve(prob, Shooting(Tsit5()), dt=0.05)

Solution from MIRK(Correct):

mirk_sol

Solution from Shooting(Wrong):

shooting_sol

ErikQQY avatar Sep 03 '23 08:09 ErikQQY