SciML / ODE.jl

Assorted basic Ordinary Differential Equation solvers for scientific machine learning (SciML). Deprecated: Use DifferentialEquations.jl instead.
Other
106 stars 50 forks source link

Possibly implement dopri5 #25

Closed jtravs closed 9 years ago

jtravs commented 10 years ago

Just a suggestion, but as discussed here: https://github.com/JuliaLang/julia/issues/75#issuecomment-36766329 One way around the licensing issues with the current ODE codes is to derive codes from the solvers at: http://www.unige.ch/~hairer/software.html

In particular the MATLAB ode45 is very similar to the dopri5 code at: http://www.unige.ch/~hairer/prog/nonstiff/dopri5.f and this is the same set of coefficients used in ODE.jl (the Dormand and Prince pair).

These solvers are BSD licensed, are of very high quality, are theoretically explained in detail in the books by the authors: Hairer, Norsett and Wanner (1993): Solving Ordinary Differential Equations. Nonstiff Problems. 2nd edition. Springer Series in Comput. Math., vol. 8.

What is particularly nice about dopri5 is the dense output. i.e. if the ODE solver takes a natural step from t0 to t1 based on the error control, dense output is efficiently available anywhere between t0 and t1.

helgee commented 10 years ago

I have an almost complete Julia port of DOP853 (missing the dense output functionality). Since it shares a lot of code with DOPRI5 I should be able to implement dense output and prepare a PR with both integrators on the weekend (or sometime next week the latest).

acroy commented 10 years ago

@helgee : Cool! You could also submit it as it is and mark the PR as "work in progress" (the dense output could then be added at a later stage). It might be interesting to compare the performance to the embedded RK solvers we have now (which don't have dense output either). In #16 I have added a (crude) performance test, which should be sufficient to roughly compare the methods.

acroy commented 10 years ago

I have to add that the methods in master are slowed down due to #29. But this is fixed in #16.

helgee commented 10 years ago

Done: #33