Where did I make a mistake while trying to derive the CFL condition using the matrix norm method

88 Views Asked by At

Using the central difference derivative approximation, the finite difference approximation of the following wave equation:

$$ c^2 u_{xx} = u_{tt} \tag 1$$

can be written as:

$$ U_{i+1, j}= kU_{i, j+1} + (2 - 2k)U_{i, j} + kU_{i, j-1} - U_{i-1, j} \tag 2$$

where:

$$ k = \Bigg(c{\Delta t \over \Delta x} \Bigg)^2 \tag 3$$

Assuming that the initial and boundary conditions are zero, the iteration expression can be written as:

$$\begin{bmatrix}\vec U_{i+1}\\\vec U_{i}\end{bmatrix} = M \begin{bmatrix}\vec U_{i}\\\vec U_{i-1}\end{bmatrix} \tag 4$$

In the above expression, $M$ is the iteration matrix and it is defined as:

$$ M = \begin{bmatrix} A & -I\\I & O\end{bmatrix} \tag 5 $$

where $I$ is the identity matrix, $O$ is the zero matrix and $A$ is the following tridiagonal matrix:

$$ A = \begin{bmatrix} 2-2k & k & 0\\ k & 2-2k & k\\ 0 & k & 2-2k\\ \end{bmatrix} \tag 6$$

Since there are no boundary conditions in the form of derivatives, the stability condition is:

$$ c{\Delta t \over \Delta x} \leq 1 \tag7 $$

This is the Courant–Friedrichs–Lewy (CFL) condition.

I have studied the finite difference method from this book. The way I understand this method, the method is stable by making sure that the first, second or infinity norm of the matrix $M$ is less or equal to one. I am trying to derive the CFL condition by analyzing the matrix norms, but I am failing. Here is what I did:

By analyzing the first norm I wrote:

$$ k + |2-2k| + k + 1 \leq 1 \tag 8$$

Then I considered the case where $k$ is less or equal to $1$:

$$ k + 2-2k + k + 1 \leq 1 \Rightarrow 3\leq 1 \tag {9}$$

It seems that the CFL condition can not be derived this way, or I made a mistake somewhere.

I tried one more way to derive the CFL condition using the matrix method. The method is described on page $148$ of the book I referenced, and there is also an example for the heat equation on page $150$.

The goal is to make sure that the spectral radius of matrix $M$ is less or equal to one. I have derived the eigenvalues of $M$ to be:

$$\lambda (k,n) = 0.5\bigg(f(k,n) \pm \sqrt {f^2(k,n) - 4}\bigg) \tag {10}$$

where $f(k,n)$ is defined as:

$$ f(k,n) = 2 - 2k \Bigg( 1 + \cos{\Big({n\pi \over N + 1}\Big)} \Bigg) \tag {11}$$ Note that $N$ is equal to three in this case and $n\in\{1, 2, 3\}.$ Plotting the absolute values of the six eigenvalue functions in Matlab, I got the following graph:

enter image description here

From the graph it can be seen that I made a mistake somewhere again, or I missed something. I tried to figure out what, but failed. The value of the spectral radius should not be equal to one if $k \geq 1$. It should be greater than one. But on my graph it is equal to one.

My question is, where am I making a mistake and how can I derive the CFL condition using the matrix method?