BoundaryValueDiffEq.jl
BoundaryValueDiffEq.jl copied to clipboard
README example should use interpolation instead of indexing
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):
Solution from Shooting(Wrong):