I was reading about the Crank-Nicolson method, and it is often said that it can produce "spurious oscillations" or that this method is prone to "ringing", especially for large time step and stiff initial value.

I'm curious about that phenomena but I can't find any satisfying answer. I read on this website that this could be because the Crank-Nicolson scheme was not L-stable.

What is the definition of L-stable ? How this is related to the production of oscillations ?

I found in this paper a beginning of an explanation thanks to a Fourier transform (see eq. 9, p. 255), but I really can't understand why the frequency $\varphi$ is only between $-\pi$ and $\pi$, and why $\varphi \approx \pm \pi$ should correspond to "high frequencies". Can you help me with that, too ?

Finally, I would like to know if this spurious oscillations problem always appear with a Crank-Nicolson scheme, or does it depend on the equation you discretize ?

To sum up, my questions are :

  1. What is the origin of the spurious oscillations when using a Crank-Nicolson scheme ?
  2. Does it depend on the equation we consider ?
  3. What is the L-stability and in what it is related with the oscillations ? (if it is)
  4. Can you help me to understand eq. 9 of this paper, why $-\pi < \varphi < \pi$ and not $\varphi \in \mathbb{R}$ ?
  • 4
    $\begingroup$ Usually the frequencies are limited by the grid itself: a function defined on a regular grid can't oscillate faster than $(-1)^j$, which is $\cos \pi x/h$, which in this notation limits the frequencies to $[-\frac\pi h,\frac\pi h]$. $\endgroup$
    – Kirill
    Mar 28, 2017 at 3:01
  • $\begingroup$ The Crank-Nicholson method is a multi-stage time stepping scheme. If you do a Von Neumann analysis on a 1D advection problem you'll see that the scheme has dispersion errors and produces more than one mode that travels at different speeds. This is why you see spurious oscillations. $\endgroup$
    – Vikram
    Mar 28, 2017 at 10:18
  • $\begingroup$ @Kirill, thank you. I drew several cosinus with different frequency on a space grid and I now understand that any oscillation of higher frequency can not be represented and will be "interpreted" as an oscillation of lower frequency. This makes sense to me. $\endgroup$
    – Matthieu
    Mar 29, 2017 at 0:01
  • 2
    $\begingroup$ @Matthieu The things you ask about are usually covered in textbooks better than in the overview paper you linked to, so it might be easier to check out something like LeVeque's book, or Morton-Meyers. I think it should explain it quite well. $\endgroup$
    – Kirill
    Mar 29, 2017 at 0:06
  • 1
    $\begingroup$ Yes. This pdf seems to have a decent overview. people.maths.ox.ac.uk/trefethen/5all.pdf $\endgroup$
    – Vikram
    Mar 29, 2017 at 8:25

1 Answer 1


There is something very basic that you should know about hyperbolic problems. Consider the most basic example $\partial_tu+a\partial_xu=0$ with a numerical marching scheme of the form $$u_j^{n+1}=\sum_kc_ku_{j+k}^n$$. This covers all explicit schemes, and all implicit schemes like Crank Nicolson also, if you begin by solving the tridiagonal system. It actually covers ALL numerical methods, of any kind, that are linear under addition and multiplication. Godunov's theorem, known since 1959, asserts that any method of that form that is better than first-order accurate will produce spurious oscillations. LeVeque's book will fill you in.

The important thing to stress is that this has little to do with stability, but is absolutely pervasive in CFD because the F stands for Fluid and fluids can distort a lot, so advection terms are very important, and there things that cannot be done, even in the most trivial cases.

The rather amazing conclusion is that even linear hyperbolic problem must be solved by nonlinear numerical methods to achieve reasonable accuracy. All successful methods involve an element of feedback between the developing solution and the numerical scheme.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.