Numerical solution to the second order wave equation

In summary, the equation has four variables and needs to be rewritten as a system of first order equations. The first step is to rewrite it as a system, and then solve for the variables.f
  • #1

Homework Statement

Consider the second order wave equation

[tex]u_{tt} = 4u_{xx}[/tex]

There are initial and boundary conditions attached, but I'm less concerned with those for the moment. I think I can figure those out if I can figure out where to get started.

Rewrite this as a system of first order equations of the form [itex]\mathbf{u}_t = A\mathbf{u}_x + B\mathbf{u}[/itex] where [itex]\mathbf{u} = (u,u_t,u_x)^T[/itex] and solve using the Crank-Nicolson method.

Homework Equations

The Crank-Nicolson method (which is implicit) is given by

[tex]u_j^{n+1} - (1/4)\lambda(u_{j+1}^{n+1} - u_{j-1}^{1}) = u_j^n + (1/4)\lambda(u_{j+1}^n - j_{j-1}^n[/tex]

The Attempt at a Solution

The first thing I did was to rewrite the equation as a system, as instructed. This came out to be

[tex]\left[\begin{array}{c}u \\ u_t \\ u_x\end{array}\right]_t = \left[\begin{array}{ccc}0 & 0 &0\\ 0&0&4\\ 0&1&0\end{array}\right]\left[\begin{array}{c}u\\ u_t \\ u_x\end{array}\right]_x + \left[\begin{array}{ccc}0 & 1 &0\\ 0&0&0\\ 0&0&0\end{array}\right]\left[\begin{array}{c}u\\ u_t \\ u_x\end{array}\right] [/tex]

I feel stuck from here, though. Typically when you deal with systems of equations in PDEs, you decouple the system by diagonalizing it. This was the suggested step even in this case, in one of the books I found. You write [itex]A = T^{-1}\Lambda T[/itex] and premultiply by T to get

[tex]T\mathbf{u}_t = \Lambda T\mathbf{u}_x + TB\mathbf{u}[/tex]

In theory, then, you can make a change of variables [itex]w = Tu[/itex] to get a completely decoupled system. In this case, however, the presence of that u term makes it impossible to completely decouple. After computing T, I ended up with this system:

[tex]\mathbf{v}_t = \left[\begin{array}{ccc}-2 & 0 &0\\ 0&2&0\\ 0&0&0\end{array}\right]\mathbf{v}_x + \left[\begin{array}{ccc}0 & 0 &0\\ 0&-2&0\\ 0&1&0\end{array}\right]\mathbf{u}[/tex]

I'm not sure where to go from here, since I can't even eliminate u. Does anyone have any experience with this? Thanks!

edit: forgot to include u at the end
Last edited:
  • #2
Is the transformation matrix T a matrix of eigenvectors?
  • #3
Yes, T is a matrix of eigenvectors with [itex]\Lambda[/itex] the corresponding diagonal matrix of eigenvalues
  • #4
I'll post, step by step, how I used this method for a heat conduction problem a number of years ago. First I'll try photographing it from a journal article. If that is illegible, I'll type it out. Equation will be first order in time. I'll post within 2 hours.
  • #5
Awesome, thank you!
  • #6
Here are some pictures of pages from something that belongs to me so there are no copyright issues. I'm not a lawyer. Method is same as was used in journal article I cited above. Hope this helps you out.


  • DSC00104.JPG
    15.2 KB · Views: 487
  • DSC00105.JPG
    15.7 KB · Views: 493
  • DSC00106.JPG
    21 KB · Views: 503
  • #7
That was very helpful. Thank you again!

Suggested for: Numerical solution to the second order wave equation