title: Lax–Wendroff method
text: # 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 the governing equation is evaluated at the current time.
  
  ## Definition
  
  Suppose one has an equation of the following form:
  
  ${\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,
  
  $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].$
  
  Here $n$ refers to the $t$ dimension and $i$ refers to the $x$ dimension. This linear scheme can be extended to the general non-linear case in different ways. One of them is letting
  
  $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:
  
  $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 $A_{i\pm 1/2}$ is the Jacobian matrix evaluated at 1/2 $(u_i^n+u_{i±1}^n){\textstyle$ {\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(x, t)) at half time steps, $t_{n+1/2}$ and half grid points, $x_{i+1/2}.$ In the second step values at $t_{n+1}$ are calculated using the data for $t_n$ and $t_{n+1/2}.$
  
  First (Lax) steps:
  
  $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})),$
  
  $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:
  
  $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:
  
  $u_{i}^{*}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}(f(u_{i+1}^{n})-f(u_{i}^{n})).$
  
  Second step:
  
  $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:
  
  $u_{i}^{*}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}(f(u_{i}^{n})-f(u_{i-1}^{n})).$
  
  Second step:
  
  $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].$
  
  