diff --git a/desolver/integrators/__init__.py b/desolver/integrators/__init__.py index ef31f89..a334f36 100644 --- a/desolver/integrators/__init__.py +++ b/desolver/integrators/__init__.py @@ -18,6 +18,7 @@ RK4Solver, MidpointSolver, HeunsSolver, + RalstonsSolver, EulerSolver, EulerTrapSolver, HeunEulerSolver, diff --git a/desolver/integrators/explicit_integration_schemes.py b/desolver/integrators/explicit_integration_schemes.py index 8d00036..f9a4ed9 100644 --- a/desolver/integrators/explicit_integration_schemes.py +++ b/desolver/integrators/explicit_integration_schemes.py @@ -11,6 +11,7 @@ 'RK4Solver', 'MidpointSolver', 'HeunsSolver', + 'RalstonsSolver', 'EulerSolver', 'EulerTrapSolver', 'HeunEulerSolver', @@ -242,14 +243,14 @@ class MidpointSolver(RungeKuttaIntegrator): [[0, 0, 1]], dtype=numpy.float64 ) -class HeunsSolver(RungeKuttaIntegrator): +class RalstonsSolver(RungeKuttaIntegrator): """ The derived class that implements Heun's method. """ __order__ = 2.0 - __alt_names__ = ("Explicit Heun's", "Heun's") + __alt_names__ = ("Explicit Ralston's", "Ralston's") tableau_intermediate = numpy.array( [[0, 0, 0 ], @@ -260,6 +261,24 @@ class HeunsSolver(RungeKuttaIntegrator): [[0, 1/4, 3/4]], dtype=numpy.float64 ) +class HeunsSolver(RungeKuttaIntegrator): + """ + The derived class that implements Heun's method. + """ + + __order__ = 2.0 + + __alt_names__ = ("Explicit Heun's", "Heun's") + + tableau_intermediate = numpy.array( + [[0, 0, 0], + [1, 1, 0]], dtype=numpy.float64 + ) + + tableau_final = numpy.array( + [[0, 1/2, 1/2]], dtype=numpy.float64 + ) + class EulerSolver(RungeKuttaIntegrator): """ The derived class that implements the Euler method.