Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

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

  1. 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. 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. 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. 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}=0

    Why: \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. 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.