Recipe
Diagonalize a hyperbolic system to canonical form
Use when: you have a strictly hyperbolic system \mathbf u_t+A\mathbf u_x=\mathbf 0, constant matrix A, and want it as decoupled scalar transport equations
Goal: the canonical variables \mathbf r, the decoupled equations they satisfy, and the way back to \mathbf u
Taught in Diagonalizing to canonical form
Quick recipe
-
1
Find every eigenvalue \lambda_i of A. Find a matching eigenvector for each one, exactly as for any square matrix.
Example
For A=\begin{pmatrix}2&3\\3&2\end{pmatrix}: the eigenvalues are \lambda_1=5 with eigenvector (1,1), and \lambda_2=-1 with eigenvector (1,-1).
Why: strict hyperbolicity guarantees n real, distinct eigenvalues. So A is always diagonalizable this way.
-
2
Put the eigenvectors into the columns of R, in some fixed order. Put the matching eigenvalues on \Lambda's diagonal, in that same order. Then invert R.
Example
R=\begin{pmatrix}1&1\\1&-1\end{pmatrix},\qquad R^{-1}=\frac12\begin{pmatrix}1&1\\1&-1\end{pmatrix},\qquad \Lambda=\begin{pmatrix}5&0\\0&-1\end{pmatrix}Why: this is ordinary matrix diagonalization, A=R\Lambda R^{-1}. Columns and diagonal entries are lined up index by index.
-
3
Set \mathbf r=R^{-1}\mathbf u; these are the system's Riemann, or characteristic, variables.
Example
For the matrix above, \mathbf r=\frac12\begin{pmatrix}1&1\\1&-1\end{pmatrix}\mathbf u, so r_1=\frac12(u_1+u_2) and r_2=\frac12(u_1-u_2).
Why: substituting \mathbf u=R\mathbf r into \mathbf u_t+A\mathbf u_x=\mathbf0, then left-multiplying by R^{-1}. That is exactly what decouples the system.
-
4
Each component now satisfies its own scalar transport equation, r_{i,t}+\lambda_ir_{i,x}=0. No other r_j appears at all.
Example
r_{1,t}+5r_{1,x}=0,\qquad r_{2,t}-r_{2,x}=0Why: \Lambda is diagonal. So the matrix equation \mathbf r_t+\Lambda\mathbf r_x=\mathbf0 splits into n fully separate equations, one per row.
-
5
Solve each r_i with ch.02's characteristics. The canonical variables aren't the final answer, unless the question asked for them directly.
Example
If r_1(x,t)=F(x-5t) and r_2(x,t)=G(x+t) solve the last step's equations, then u_1=r_1+r_2 and u_2=r_1-r_2 recover the original unknowns.
- the question asks for r_i(x,t) itself — stop right after solving the decoupled equations.
- the question asks for the original u_i(x,t) — apply \mathbf u=R\mathbf r before reporting an answer.
Why: \mathbf r=R^{-1}\mathbf u is only a change of variables. The physical quantities the question asked about live in \mathbf u.
Common mistakes
- Reporting r_i(x,t) as the final answer, instead of converting back to u_i with \mathbf u=R\mathbf r.
- Mismatching an eigenvector's column with a different eigenvalue's position in \Lambda.
- Writing R^{-1}\Lambda R instead of R\Lambda R^{-1} when checking A=R\Lambda R^{-1}.
- Assuming this recipe still applies once A depends on x or t. A non-constant A needs a different approach entirely.