Lably
Skip to content

Crank–Nicolson method

Finite difference method for numerically solving parabolic differential equations

  • 7 min read
  • 6 chapters

Related on Lably

Through Numerical analysis, Big O notation and Invertible matrix

For diffusion equations (and many other equations), it can be shown the Crank–Nicolson method is unconditionally stable. However, the approximate solutions can still contain (decaying) spurious oscillations if the ratio of time step Δt times the thermal diffusivity to the square of space step, Δx2, is large (typically, larger than 1/2 per Von Neumann stability analysis). For this reason, whenever large time steps or high spatial resolution is necessary, the less accurate backward Euler method is often used, which is both stable and immune to oscillations.

Principle

The Crank–Nicolson method is based on the trapezoidal rule, giving second-order convergence in time. For linear equations, the trapezoidal rule is equivalent to the implicit midpoint method—the simplest example of a Gauss–Legendre implicit Runge–Kutta method—which also has the property of being a geometric integrator. For example, in one dimension, suppose the partial differential equation is ∂u∂t=F(u,x,t,∂u∂x,∂2u∂x2).

Letting u(iΔx,nΔt)=uin and Fin=F evaluated for i,n and uin, the equation for Crank–Nicolson method is a combination of the forward Euler method at n and the backward Euler method at n+1 (note, however, that the method itself is not simply the average of those two methods, as the backward Euler equation has an implicit dependence on the solution):

Note that this is an implicit method: to get the "next" value of u in time, a system of algebraic equations must be solved. If the partial differential equation is nonlinear, the discretization will also be nonlinear, so that advancing in time will involve the solution of a system of nonlinear algebraic equations, though linearizations are possible. In many problems, especially linear diffusion, the algebraic problem is tridiagonal and may be efficiently solved with the tridiagonal matrix algorithm, which gives a fast O(N) direct solution, as opposed to the usual O(N3) for a full matrix, in which N indicates the matrix size.

Sign in to keep reading

5 more chapters are free with a Lably account.

More in Calculus and analysis