From one travelling wave to a method
In the previous guide we solved the transport equation u_t + c u_x = 0 and found that every solution is a frozen profile sliding right at speed c: u(x,t) = f(x - c t). That answer came almost for free, and it is tempting to treat it as a lucky special case. It is not. Hidden inside it is a completely general idea — the method of characteristics — that solves a whole family of first-order PDEs, and we are going to drag that idea out into the open.
Here is the shift in viewpoint. A PDE ties together rates of change in several directions at once, which is exactly why it feels hard — there is no single line to march along. The method of characteristics finds, for a first-order equation, the right lines: paths in the (x,t)-plane along which the unknown u changes in a way governed by an ordinary differential equation, not a partial one. Walk those paths and the multivariable problem dissolves into one-variable problems you already know how to solve from the ODE rung below.
The directional derivative trick
Take the most basic equation the method handles, a linear first-order PDE with constant coefficients: a u_x + b u_t = 0. Stare at the left side. If you remember the chain rule, a u_x + b u_t is exactly the rate at which u changes as you move through the (x,t)-plane in the direction (a, b). So the whole equation is saying one calm sentence: *u does not change at all when you move in the direction (a, b)*. It is constant along every line pointing that way.
Those lines are the characteristic curves. In this constant-coefficient case they are just straight lines b x - a t = constant, and u carries whatever value it had where the line started, unchanged, forever. For the transport equation a u_x + b u_t becomes u_t + c u_x with (a, b) = (c, 1): the characteristics are x - c t = constant, and the fact that u is constant on each one is precisely why u(x,t) = f(x - c t). The travelling wave was the characteristic picture all along; we just had not named the curves.
The characteristic ODE system
Now let us make the procedure mechanical, because the real payoff is that it works even when a and b depend on x and t. We parametrize a characteristic curve by a parameter s, so the moving point is (x(s), t(s)), and we ask how u behaves along it. The equation a u_x + b u_t = 0 tells us to choose the velocity of the point to be (a, b). That gives the characteristic ODE system: ordinary differential equations for x(s) and t(s) that trace the curve, plus one more for u itself along the curve.
Equation: a u_x + b u_t = 0 Characteristic ODE system (parameter s): dx/ds = a dt/ds = b du/ds = a u_x + b u_t = 0 -> u is constant along the curve So: solve for (x(s), t(s)), and carry u unchanged from the start.
That third line, du/ds = a u_x + b u_t, is the heart of it: by the chain rule du/ds is just how fast u changes as the point (x(s), t(s)) moves, and the PDE says that quantity is zero. So u is constant along each characteristic. The bookkeeping that earlier looked like magic — "u keeps its initial value" — is now a one-line ODE, du/ds = 0, with the obvious solution u = constant. We have genuinely turned a PDE into ODEs.
A worked recipe
Let us run the whole loop on a non-constant example so you can feel the mechanism turn: x u_x + u_t = 0 with u(x, 0) = g(x). Here the speed depends on position, a = x and b = 1, so the characteristics curve and bend instead of marching as parallel straight lines. The recipe is the same as before; only the curves get more interesting.
- Write the characteristic ODEs. From a = x, b = 1: dt/ds = 1, dx/ds = x, du/ds = 0. Reading t as the parameter (since dt/ds = 1), this is just dx/dt = x and du/dt = 0.
- Solve for the curves. dx/dt = x gives x = x_0 e^t, where x_0 is where the curve sits at t = 0. Equivalently x e^(-t) = x_0 is constant along each characteristic — that combination is the conserved quantity.
- Transport u. du/dt = 0 means u keeps its starting value g(x_0). Each point of the solution remembers the data at the foot of its characteristic.
- Assemble the answer. Replace x_0 by x e^(-t): u(x, t) = g(x e^(-t)). Check it — u_x = g'·e^(-t), u_t = g'·(-x e^(-t)), so x u_x + u_t = g'(x e^(-t)) - g'(x e^(-t)) = 0, and u(x,0) = g(x). It works.
Notice the shape of the final answer: a single arbitrary function g, evaluated at the conserved combination x e^(-t). That is the signature of a general solution of a PDE. Unlike an ODE, where the general solution carries arbitrary constants, a PDE's general solution carries arbitrary functions — there is a whole function's worth of freedom, and it is the initial data g that pins down exactly which one. Characteristics make that freedom concrete: each characteristic is one independent dial.
The geometry: a surface woven from curves
There is a beautiful picture underneath all the algebra. Think of the answer as a solution surface: the graph of u above the (x,t)-plane, a sheet floating in (x, t, u)-space. Each characteristic, once we attach its (constant) u-value, becomes a curve lying in that sheet. Solving the PDE is literally weaving the surface out of these characteristic curves, like laying down threads. Start with the data curve at t = 0, then let every point of it ride forward along its characteristic, and the threads sweep out the whole surface.
This geometry also makes honest the limits of the method — limits we will spend the rest of the rung exploring. For a constant-speed advection equation the characteristics are parallel, never touch, and the weave is flawless for all time. But the moment the characteristic speed depends on u itself — a quasilinear equation, guide 3 — the characteristics can fan together and cross. Where two threads carrying different u-values meet, the surface tries to be in two places at once, the solution loses its single value, and a shock is born. That is the road to Burgers' equation at the end of this rung.