JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

Explicit vs Implicit Schemes

The same heat equation, two ways to step forward in time: one cheap per step but shackled by a tiny step-size limit, the other costlier per step but free of that chain. Meet FTCS, BTCS, and Crank-Nicolson, and learn why solving a linear system can be the fast choice.

The fork in the road

In the previous guide you laid a grid over a metal bar and replaced derivatives by finite-difference stencils: the second space derivative u_xx at a point became (u_{i-1} - 2 u_i + u_{i+1})/h^2, the difference of a value and its two neighbours, divided by the spacing squared. Now we add time. The heat equation says u_t = alpha u_xx — the rate of change of temperature in time equals a constant alpha times its curvature in space. We already know how to discretize the right-hand side. The whole question of this guide is one innocent-looking choice: when do we evaluate that right-hand side — at the time level we are stepping FROM, or the one we are stepping TO?

This is the same fork you met one rung earlier, with ordinary differential equations. There, forward Euler used the slope at the current point — an explicit, plug-in-and-go step — while backward Euler used the slope at the destination, trapping the unknown on both sides of the equation. The PDE case inherits exactly that personality split, only now "the unknown" is not one number but a whole row of grid values across the bar. That single difference — one unknown versus a coupled row of them — is what turns a trivial update into a linear system, and it is the heart of everything that follows.

FTCS: the explicit way

Take the right-hand side at the OLD time level n. Use a forward difference in time and the centred difference in space, and you get the FTCS scheme — Forward-Time, Centred-Space, the FTCS scheme. Solve it for the one new value u_i^{n+1} and everything on the right is already known from the row you just had. Each new temperature is simply the old one nudged by a weighted average of its neighbours. There is no system to solve, no matrix to invert; you sweep across the bar once and you are done. This is what explicit means: the new values are written out explicitly in terms of old ones.

let r = alpha * dt / h^2     (the key ratio)

FTCS update for each interior i:
    u_i^{n+1} = u_i^n + r * (u_{i-1}^n - 2 u_i^n + u_{i+1}^n)

= (1 - 2r) u_i^n + r u_{i-1}^n + r u_{i+1}^n
FTCS: one explicit sweep. The new value is a weighted blend of three old neighbours, controlled by the ratio r.

Cheap and simple — so where is the catch? Look at the coefficient (1 - 2r) of the centre point. If the ratio r = alpha dt/h^2 is bigger than 1/2, that weight goes negative. Physically, heat smooths a profile out; numerically, a negative central weight does the opposite — it amplifies wiggles, and a tiny bump grows into a checkerboard of exploding values that swing positive and negative. FTCS is only conditionally stable: it works only when r is at most 1/2. The full justification waits for the von Neumann analysis two guides from now, but you can already feel the consequence in your bones.

BTCS: the implicit way

Now evaluate the space stencil at the NEW time level n+1 instead. This is the BTCS scheme — Backward-Time, Centred-Space, the BTCS scheme. The update for u_i^{n+1} now mentions three unknowns at the new level: u_{i-1}^{n+1}, u_i^{n+1}, and u_{i+1}^{n+1}. You cannot solve one grid point in isolation, because each new value leans on its new neighbours, which lean on theirs, all the way across the bar. The new row is defined only implicitly — as the solution of a coupled set of equations, one per interior point.

Gather all those equations and they form a linear system A u^{n+1} = u^n (with boundary terms folded in). Here A is not a dense, scary matrix — each equation involves only a point and its two immediate neighbours, so A has nonzeros only on the main diagonal and the two adjacent ones. That is a tridiagonal matrix, and it is a gift. A general n-by-n solve costs O(n^3), but a tridiagonal one yields to the Thomas algorithm — Gaussian elimination that touches only the three live bands — in a mere O(n) operations, linear in the number of grid points. One implicit step costs only a small constant factor more than one explicit FTCS sweep.

And the payoff is large: BTCS is unconditionally stable. No matter how big you make dt, the scheme never blows up — the same reason backward Euler tames a stiff equation in the ODE rung. The negative-weight trap of FTCS simply does not exist here, because the implicit coupling damps disturbances at every step rather than amplifying them. You are free to choose dt for ACCURACY alone, not to appease a stability police. For a problem where the spatial grid must be fine (small h), that freedom can mean taking thousands of times fewer steps, and the implicit method wins outright despite the linear solve inside each step.

Crank-Nicolson: splitting the difference

FTCS and BTCS share a flaw the von Neumann guide will quantify: both are only first-order accurate in time, error O(dt). Halve the time step and you only halve the time error — a poor trade when space is already O(h^2). The fix is elegant: evaluate the space stencil HALFWAY between the two time levels, as the average of the old and new stencils. That is the Crank-Nicolson scheme, the Crank-Nicolson scheme — a 50/50 blend of FTCS and BTCS. It is still implicit (the new level still appears), so you still solve a tridiagonal system each step, but the symmetric averaging centres the time difference at the midpoint and lifts the accuracy to O(dt^2).

Crank-Nicolson is unconditionally stable AND second-order in both space and time — which is why it is the workhorse for the heat equation and a default in countless solvers. But honesty demands the fine print. It is A-stable but not L-stable: for very large dt its amplification factor approaches -1 rather than 0, so a sharp jump in the initial data is not killed but merely flipped in sign each step, producing slowly decaying oscillations that ring like a struck bell. The energy never explodes (it stays stable), yet the answer can look ugly. The cure in practice is to start with one or two BTCS steps to crush the sharp transient, then switch to Crank-Nicolson for the smooth remainder.

Choosing a scheme, honestly

So which do you reach for? There is no universal winner, only a few honest rules of thumb. The decision turns on the same trio that rules this whole subject: accuracy you need, cost per step, and how the stability limit bites.

  1. If the grid is coarse and dt naturally satisfies r <= 1/2, FTCS is the simplest thing that works — a few lines of code, no linear solver. Prototypes and teaching live here.
  2. If the spatial grid must be fine (small h), the explicit dt <= h^2/(2 alpha) cap becomes crippling. Go implicit: BTCS or Crank-Nicolson let dt be chosen for accuracy, and the O(n) tridiagonal solve keeps each step cheap.
  3. If you want second-order accuracy and smooth data, Crank-Nicolson is the default. If the initial data has a sharp jump or shock, damp it first with a couple of BTCS steps to avoid the ringing.
  4. Always remember the answer is still approximate. Every step rounds in floating-point, so even an unconditionally stable scheme on a well-posed problem only delivers an approximation, and its order O(dt^2) or O(h^2) is a promise about the trend, not a guarantee of the digits.

One last caution to carry forward. "Unconditionally stable" is a promise about not blowing up, NOT a promise of accuracy. A giant dt with BTCS stays bounded and well-behaved, yet can smear a moving front into mush — you traded an explosion for a blur. The distinction between a scheme that converges to the right answer and one that merely stays finite is precisely what the next guide, on consistency, stability, and convergence, exists to untangle. The explicit-versus-implicit choice you made here sets the stage; the Lax equivalence theorem will tell you when it actually pays off.