# midpoint

midpoint, a MATLAB code which solves one or more ordinary differential equations (ODE) using the (implicit) midpoint method.

Unless the right hand side of the ODE is linear in the dependent variable, each midpoint step requires the solution of an implicit nonlinear equation. Such equations can be approximately solved using methods such as fixed point iteration, or an implicit equation solver like fsolve().

### Languages:

midpoint is available in a FreeFem++ version and a MATLAB version and an Octave version and a Python version and an R version.

### Related Data and codes:

backward_euler, a MATLAB code which solves one or more ordinary differential equations (ODE) using the backward Euler method.

backward_euler_fixed, a MATLAB 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.

cauchy_method, a MATLAB code which solves one or more ordinary differential equations (ODE) using the Cauchy method.

euler, a MATLAB code which solves one or more ordinary differential equations (ODE) using the forward Euler method.

leapfrog, a MATLAB code which uses the leapfrog method to solve a second order ordinary differential equation (ODE) of the form y''=f(t,y).

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

midpoint_fixed, a MATLAB 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.

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

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

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

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

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

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

theta_method, a MATLAB code which solves one or more ordinary differential equations (ODE) using the theta method.

trapezoidal, a MATLAB code which solves one or more ordinary differential equations (ODE) using the (implicit) trapezoidal method.

trapezoidal_explicit, a MATLAB code which solves one or more ordinary differential equations (ODE) using the (explicit) trapezoidal method.

trapezoidal_fixed, a MATLAB 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.

velocity_verlet, a MATLAB 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. Catalin Trenchea, John Burkardt,
Refactorization of the midpoint rule,
Applied Mathematics Letters,
Volume 107, September 2020.

### Source Code:

• midpoint.m, a version of the midpoint method that solves the associated nonlinear equation using fsolve() from the MATLAB Optimization Toolbox.

Last revised on 07 April 2021.