The Method of Characteristics
Why did u(x, t) = f(x - ct) solve the
transport equation?
Because u stays constant along the moving lines
x - ct = \text{const}. That was a nice trick for one particular PDE — but
it turns out to be far more than a trick. Ride along the right curve through the
(x, t) plane, and almost any first-order PDE collapses to something you
already know how to solve: an ordinary differential equation. The
method of characteristics is the recipe for finding that curve.
Along a path x(t), the chain rule gives the rate of change of
u as you ride it:
\frac{d}{dt}\,u\big(x(t), t\big) = u_t + \frac{dx}{dt}\,u_x.
Compare with u_t + c\,u_x = 0: if we choose the path so that
\frac{dx}{dt} = c, the right-hand side is the PDE, so
\frac{du}{dt} = 0. The unknown is constant along that path. A whole hard
problem — a function of two variables, changing in two directions at once — has been reduced to a
family of one-variable problems, one per starting point.
The recipe
Strip away the specifics and what's left is a two-step routine that works for any first-order PDE
of the form u_t + a(x, t)\,u_x = 0 — even when the coefficient
a is not the constant speed c, but changes
from place to place:
-
Find the characteristics. Read the coefficient of u_x
straight off the PDE and set dx/dt equal to it. Solving that ODE gives
a family of curves, one through every starting point x_0 on the
initial line t = 0.
-
Solve the ODE along each curve. The same substitution always turns the PDE into
du/dt = 0 along that curve, so u keeps
whatever value it had at the curve's foot, u(x_0, 0) = f(x_0).
Reassembling the solution is just bookkeeping: solve the characteristic equation for
x_0 in terms of (x, t), and substitute it into
f(x_0). For the transport equation,
x_0 = x - ct and out pops
u(x, t) = f(x - ct) again — but now as one case of a much more general
machine.
- The characteristics of u_t + a(x,t)\,u_x = 0 are the curves dx/dt = a(x, t) in the (x, t) plane.
- Along each characteristic the PDE collapses to du/dt = 0, so u is carried unchanged from its starting value.
- The solution at (x, t) equals the initial value at the foot of the characteristic through that point.
Worked example: a coefficient that varies with x
Try u_t + x\,u_x = 0, with u(x, 0) = f(x). The
coefficient of u_x is no longer a constant speed — it's
x itself, so points further from the origin move faster.
Step 1 — the characteristics. Set dx/dt = x. This is a
separable ODE:
\frac{dx}{x} = dt \;\Rightarrow\; \ln x = t + \text{const} \;\Rightarrow\; x(t) = x_0\,e^{t}.
Every characteristic is an exponential curve fanning out from its starting point
x_0 on the t = 0 line.
Step 2 — solve along it. As always, du/dt = 0 along a
characteristic, so u = f(x_0) stays fixed. Solving
x = x_0 e^t for the label gives x_0 = x\,e^{-t},
so
u(x, t) = f\!\left(x\,e^{-t}\right).
A quick check confirms it: differentiating,
u_t = -x e^{-t} f' and u_x = e^{-t} f', so
u_t + x\,u_x = -x e^{-t} f' + x \cdot e^{-t} f' = 0. It satisfies the PDE
exactly.
Compare this to plain transport. There, every characteristic had the same slope
c, so the family was a set of parallel lines. Here the
slope dx/dt = x depends on where you are, so the
characteristics fan out (or squeeze in) instead of marching in lockstep — yet each one is still
determined purely by its starting position, not by the value of u that
it carries. That last detail matters more than it looks: it's exactly what keeps these
characteristics from ever crossing.
A second example: a coefficient that varies with time
The same recipe handles a coefficient that changes with t instead. Take
u_t + t\,u_x = 0, again with u(x, 0) = f(x) —
a wave whose carrying speed steadily accelerates.
Characteristics: dx/dt = t integrates directly to
x(t) = x_0 + \tfrac{1}{2}t^2,
a family of parabolas opening to the right, one through every x_0.
Along each one u is still frozen at
f(x_0). Solving for the label,
x_0 = x - \tfrac{1}{2}t^2, so
u(x, t) = f\!\left(x - \tfrac{1}{2}t^2\right).
Same two steps, same shape of answer, a completely different family of curves underneath. That is
the whole point of the method: the machinery never changes, only the geometry of the
characteristics it produces.
The geometric picture
Step back from any single example and a picture emerges. A first-order PDE's characteristics form a
whole family of curves that sweep out the entire (x, t)
plane — through every point (x, t) with
t > 0 passes exactly one characteristic, and it leads back to exactly one
foot on the initial line. Each curve is like a conveyor belt: it picks up one piece of the initial
data f(x_0) at t = 0 and carries it forward,
unchanged, forever after. Whatever the value was at the start, that's the value everywhere along the
belt.
In the box below, each line is a characteristic x = x_0 + ct rising
through the plane; u never changes as you travel up one. Change the speed
c and the whole family tilts together — a larger speed leans the lines
further over, carrying the data faster. Notice that however you set c,
the lines stay perfectly parallel: they never touch, let alone cross. The highlighted line is the
one starting at x_0 = 0.
That "never crossing" property isn't a coincidence of this particular equation — it holds for
any equation whose coefficient depends only on x and
t, never on u itself (as in both worked
examples above). Each characteristic is fully decided by where it starts, so two different starting
points can never be forced onto a collision course.
Everything on this page relies on the PDE being first order — only one derivative
in x and one in t. That's what lets the chain
rule turn the PDE into a single ODE along a single curve. Push into second-order PDEs (like the heat
or wave equation) and there's no single characteristic direction left to exploit in the same simple
way; a different toolkit is needed.
Even for first-order equations, there is a catch, and it's an important one. Everything above quietly
assumed the coefficient of u_x depends only on
x and t — never on u
itself. The moment it does (a quasilinear equation), characteristics can carry
different speeds depending on the solution value they're transporting, and faster ones can
catch up to slower ones and cross. At a crossing point the method tries to assign
u two different values at once — a sure sign the smooth solution has broken
down and a
shock
is forming. That's not a failure of the method — it's the method faithfully reporting that something
genuinely new is happening.
This isn't just textbook furniture. Traffic-flow models describe the density of cars on a road with a
first-order PDE, and its characteristics are literally the paths that "clumps" of traffic follow down
the highway. When traffic ahead is denser (and so moving slower) than traffic behind, the
characteristics from behind catch up to the ones ahead and cross — and that crossing is the
mathematical birth of a traffic jam, springing up from perfectly smooth-flowing traffic with no
accident required.
The same idea, run in reverse, is a workhorse of gas dynamics and aerodynamics: engineers track how a
pressure disturbance — a shock wave off a supersonic jet, a compression pulse in an engine cylinder —
propagates through a fluid by following its characteristics. It's the same handful of equations from
this page, just with the fluid's own speed of sound standing in for c.