Add adaptive Runge-Kutta ODE solver (Dormand-Prince) #795
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds
dsolve_adaptive_runge_kutta, an adaptive ODE solver using the Dormand-Prince 5(4) method.Changes
dsolve_adaptive_runge_kutta(f, x_0, x_e, y_0, atol, rtol)functionWhy add this?
The existing
dsolve_runge_kuttarequires users to guess an appropriate step count. Too few steps gives poor accuracy; too many wastes computation. This is especially problematic for problems where the solution changes rapidly in some regions and slowly in others.An adaptive solver automatically adjusts step sizes to maintain accuracy while minimizing work. Users specify error tolerances (
atol,rtol) rather than step counts, making it both easier to use and more reliable.Dormand-Prince is the standard choice for adaptive RK methods (used by MATLAB's
ode45, SciPy'ssolve_ivpdefault, and Julia'sOrdinaryDiffEq.jl).Side Notes