# Lax–Wendroff method

The Lax–Wendroff method, named after Peter Lax and Burton Wendroff, is a numerical method for the solution of hyperbolic partial differential equations, based on finite differences. It is second-order accurate in both space and time. This method is an example of explicit time integration where the function that defines governing equation is evaluated at the current time.

## Definition

Suppose one has an equation of the following form:

${\displaystyle {\frac {\partial u(x,t)}{\partial t}}+{\frac {\partial f(u(x,t))}{\partial x}}=0\,}$

where x and t are independent variables, and the initial state, u(x, 0) is given.

### Linear case

In the linear case, where f(u) = Au , and A is a constant,[1]

${\displaystyle u_{i}^{n+1}=u_{i}^{n}-{\frac {\Delta t}{2\Delta x}}A\left[u_{i+1}^{n}-u_{i-1}^{n}\right]+{\frac {\Delta t^{2}}{2\Delta x^{2}}}A^{2}\left[u_{i+1}^{n}-2u_{i}^{n}+u_{i-1}^{n}\right].}$

This linear scheme can be extended to the general non-linear case in different ways. One of them is letting

${\displaystyle A(u)=f'(u)={\frac {\partial f}{\partial u}}}$

### Non-linear case

The conservative form of Lax-Wendroff for a general non-linear equation is then:

${\displaystyle u_{i}^{n+1}=u_{i}^{n}-{\frac {\Delta t}{2\Delta x}}\left[f(u_{i+1}^{n})-f(u_{i-1}^{n})\right]+{\frac {\Delta t^{2}}{2\Delta x^{2}}}\left[A_{i+1/2}\left(f(u_{i+1}^{n})-f(u_{i}^{n})\right)-A_{i-1/2}\left(f(u_{i}^{n})-f(u_{i-1}^{n})\right)\right].}$

where ${\displaystyle A_{i\pm 1/2}}$ is the Jacobian matrix evaluated at ${\displaystyle {\frac {1}{2}}(U_{i}^{n}+U_{i\pm 1}^{n})}$.

## Jacobian free methods

To avoid the Jacobian evaluation, use a two-step procedure.

### Richtmyer method

What follows is the Richtmyer two-step Lax–Wendroff method. The first step in the Richtmyer two-step Lax–Wendroff method calculates values for f(u(xt)) at half time steps, tn + 1/2 and half grid points, xi + 1/2. In the second step values at tn + 1 are calculated using the data for tn and tn + 1/2.

First (Lax) steps:

${\displaystyle u_{i+1/2}^{n+1/2}={\frac {1}{2}}(u_{i+1}^{n}+u_{i}^{n})-{\frac {\Delta t}{2\,\Delta x}}(f(u_{i+1}^{n})-f(u_{i}^{n})),}$
${\displaystyle u_{i-1/2}^{n+1/2}={\frac {1}{2}}(u_{i}^{n}+u_{i-1}^{n})-{\frac {\Delta t}{2\,\Delta x}}(f(u_{i}^{n})-f(u_{i-1}^{n})).}$

Second step:

${\displaystyle u_{i}^{n+1}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}\left[f(u_{i+1/2}^{n+1/2})-f(u_{i-1/2}^{n+1/2})\right].}$

### MacCormack method

Another method of this same type was proposed by MacCormack. MacCormack's method uses first forward differencing and then backward differencing:

First step:

${\displaystyle u_{i}^{*}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}(f(u_{i+1}^{n})-f(u_{i}^{n})).}$

Second step:

${\displaystyle u_{i}^{n+1}={\frac {1}{2}}(u_{i}^{n}+u_{i}^{*})-{\frac {\Delta t}{2\Delta x}}\left[f(u_{i}^{*})-f(u_{i-1}^{*})\right].}$

Alternatively, First step:

${\displaystyle u_{i}^{*}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}(f(u_{i}^{n})-f(u_{i-1}^{n})).}$

Second step:

${\displaystyle u_{i}^{n+1}={\frac {1}{2}}(u_{i}^{n}+u_{i}^{*})-{\frac {\Delta t}{2\Delta x}}\left[f(u_{i+1}^{*})-f(u_{i}^{*})\right].}$

## References

1. ^ LeVeque, Randy J. Numerical Methods for Conservation Laws", Birkhauser Verlag, 1992, p. 125.