midpoint_adaptive

midpoint_adaptive, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (implicit) midpoint method, relying on fsolve() to solve the implicit equation, and using an adaptive timestep.

Licensing:

The information on this web page is distributed under the MIT license.

Languages:

midpoint_adaptive is available in a Fortran90 version and a MATLAB version and an Octave version and a Python version.

Related Data and codes:

midpoint_adaptive_test

backward_euler, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (implicit) backward Euler method, using fsolve() to solve the implicit equation, and using a fixed time step.

backward_euler_fixed, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (implicit) backward Euler method, using a fixed point iteration for the implicit equation, and using a fixed time step.

bdf2, a Fortran90 code which solves one or more ordinary differential equations (ODE) using BDF2, the (implicit) backward difference formula of order 2, using fsolve() to solve the implicit equation.

cauchy_method, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the Cauchy method, and using a fixed time step.

euler, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the forward Euler method, and using a fixed time step.

leapfrog, a Fortran90 code which uses the leapfrog method to solve a second order ordinary differential equation (ODE) of the form y''=f(t,y), and using a fixed time step.

midpoint, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (implicit) midpoint method, relying on fsolve() to solve the implicit equation, and using a fixed time step.

midpoint_explicit, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (explicit) midpoint method, also called the modified Euler method, and using a fixed time step.

midpoint_fixed, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (implicit) midpoint method, using a simple fixed-point iteration to solve the implicit equation, and using a fixed time step.

rk12, a Fortran90 code which implements Runge-Kutta solvers of orders 1 and 2 for a system of ordinary differential equations (ODE).

rk23, a Fortran90 code which implements Runge-Kutta ODE solvers of orders 2 and 3.

rk34, a Fortran90 code which implements Runge-Kutta ODE solvers of orders 3 and 4.

rk4, a Fortran90 code which applies the fourth order Runge-Kutta (RK) algorithm to estimate the solution of an ordinary differential equation (ODE).

rk45, a Fortran90 code which implements Runge-Kutta ODE solvers of orders 4 and 5.

rkf45, a Fortran90 code which implements the Runge-Kutta-Fehlberg ODE solver.

theta_method, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the theta method, and using a fixed time step.

trapezoidal, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (implicit) trapezoidal method, and using a fixed time step.

trapezoidal_explicit, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (explicit) trapezoidal method, and using a fixed time step.

trapezoidal_fixed, a Fortran90 code which solves one or more ordinary differential equations (ODE) using the (implicit) trapezoidal method, using the fixed point method to handle the implicit system, and using a fixed time step.

velocity_verlet, a Fortran90 code which uses a version of the velocity Verlet method to solve a secord order ordinary differential equation (ODE) of the form y''=f(t,y).

Reference:

  1. William Milne,
    Numerical Integration of Ordinary Differential Equations,
    American Mathematical Monthly,
    Volume 33, number 9, pages 455–460, 1926.
  2. Ernst Hairer, Syvert Norsett, Gerhard Wanner,
    Solving ordinary differential equations, I. Nonstiff problems,
    Springer Series in Computational Mathematics, Number 8,
    Springer-Verlag, Berlin, 1987.
  3. Catalin Trenchea, John Burkardt,
    Refactorization of the midpoint rule,
    Applied Mathematics Letters,
    Volume 107, September 2020.

Source Code:


Last revised on 28 June 2024.