Midpoint method

From Wikipedia, the free encyclopedia
Jump to: navigation, search
For the midpoint rule in numerical quadrature, see rectangle method.
Illustration of the midpoint method assuming that y_n equals the exact value y(t_n). The midpoint method computes y_{n+1} so that the red chord is approximately parallel to the tangent line at the midpoint (the green line).

In numerical analysis, a branch of applied mathematics, the midpoint method is a one-step method for numerically solving the differential equation,

 y'(t) = f(t, y(t)), \quad y(t_0) = y_0 .

The explicit midpoint method is given by the formula

 y_{n+1} = y_n + hf\left(t_n+\frac{h}{2},y_n+\frac{h}{2}f(t_n, y_n)\right),  \qquad\qquad (1e)

the implicit midpoint method by

 y_{n+1} = y_n + hf\left(t_n+\frac{h}{2},\frac12 (y_n+y_{n+1})\right),  \qquad\qquad (1i)

for n=0, 1, 2, \dots Here, h is the step size — a small positive number, t_n=t_0 + n h, and y_n is the computed approximate value of y(t_n). The explicit midpoint method is also known as the modified Euler method,[1] the implicit method is the most simple collocation method, and, applied to Hamiltionian dynamics, a symplectic integrator.

The name of the method comes from the fact that in the formula above the function f giving the slope of the solution is evaluated at t=t_n+h/2, which is the midpoint between t_n at which the value of y(t) is known and t_{n+1} at which the value of y(t) needs to be found.

The local error at each step of the midpoint method is of order O\left(h^3\right), giving a global error of order O\left(h^2\right). Thus, while more computationally intensive than Euler's method, the midpoint method generally gives more accurate results.

The methods are examples of a class of higher-order methods known as Runge-Kutta methods.

Derivation of the midpoint method[edit]

Illustration of numerical integration for the equation y'=y, y(0)=1. Blue: the Euler method, green: the midpoint method, red: the exact solution, y=e^t. The step size is h=1.0.
The same illustration for h=0.25. It is seen that the midpoint method converges faster than the Euler method.

The midpoint method is a refinement of the Euler's method

 y_{n+1} = y_n + hf(t_n,y_n),\,

and is derived in a similar manner. The key to deriving Euler's method is the approximate equality

 y(t+h) \approx y(t) + hf(t,y(t)) \qquad\qquad (2)

which is obtained from the slope formula

 y'(t) \approx \frac{y(t+h) - y(t)}{h} \qquad\qquad (3)

and keeping in mind that  y' = f(t, y).

For the midpoint methods, one replaces (3) with the more accurate

 y'\left(t+\frac{h}{2}\right) \approx \frac{y(t+h) - y(t)}{h}

when instead of (2) we find

 y(t+h) \approx y(t) + hf\left(t+\frac{h}{2},y\left(t+\frac{h}{2}\right)\right). \qquad\qquad (4)

One cannot use this equation to find  y(t+h) as one does not know y at t+h/2. The solution is then to use a Taylor series expansion exactly as if using the Euler method to solve for y(t+h/2):

y\left(t + \frac{h}{2}\right) \approx y(t) + \frac{h}{2}y'(t)=y(t) + \frac{h}{2}f(t, y(t)),

which, when plugged in (4), gives us

y(t + h) \approx y(t) + hf\left(t + \frac{h}{2}, y(t) + \frac{h}{2}f(t, y(t))\right)

and the explicit midpoint method (1e).

The implicit method (1i) is obtained by approximating the value at the half step t+h/2 by the midpoint of the line segment from y(t) to y(t+h)

y\left(t+\frac h2\right)\approx \frac12\bigl(y(t)+y(t+h)\bigr)

and thus

\frac{y(t+h)-y(t)}{h}\approx y'\left(t+\frac h2\right)\approx k=f\left(t+\frac h2,\frac12\bigl(y(t)+y(t+h)\bigr)\right)

Inserting the approximation y_n+h\,k for y(t_n+h) results in the implicit Runge-Kutta method

k&=f\left(t_n+\frac h2,y_n+\frac h2 k\right)\\

which contains the implicit Euler method with step size h/2 as its first part.

Because of the time symmetry of the implicit method, all terms of even degree in h of the local error cancel, so that the local error is automatically of order \mathcal O(h^3). Replacing the implicit with the explicit Euler method in the determination of k results again in the explicit midpoint method.

See also[edit]