Group velocity and dispersion

Every wave packet is secretly two waves at once. Zoom in and you see fast ripples racing along at the phase velocity; zoom out and you see the overall "blob" — the envelope carrying the energy — drifting at the group velocity. For an ideal string or light in vacuum these two speeds happen to coincide, and a pulse glides along without changing shape. But most real media are not so obliging: a medium is called dispersive when the phase velocity itself depends on wavenumber, and then the envelope speed and the ripple speed pull apart. The consequence is not subtle — a sharp pulse sent into a dispersive medium spreads out as it travels, because its different wavenumber components drift out of step with one another. This article turns that qualitative story into two clean formulas, vp=ω/kv_p=\omega/k and vg=dω/dkv_g=d\omega/dk, shows how a given dispersion relation ω(k)\omega(k) decides whether vg=vpv_g=v_p or not, and works both cases numerically — a non-dispersive string and a dispersive water-wave relation — so you can read off dispersive behaviour from ω(k)\omega(k) on sight.

The core insight

A wave packet's envelope moves at the group velocity vg=dω/dkv_g=d\omega/dk, which equals the phase velocity vp=ω/kv_p=\omega/k only when ω(k)\omega(k) is linear (non-dispersive); when ω(k)\omega(k) is nonlinear, vg≠vpv_g\neq v_p and the packet spreads as it propagates.

The core idea

Two different speeds live inside one wave packet.

  • Phase velocity is the speed of a single crest of the underlying oscillation, for a plane wave y=Acos⁡(kx−ωt)y=A\cos(kx-\omega t):
vp=ωk.v_p = \frac{\omega}{k}.

where: ω\omega is angular frequency (rad/s) and kk is wavenumber (rad/m).

  • Group velocity is the speed of the envelope — the shape that actually carries the packet's energy and information — for a narrow band of wavenumbers centred on k0k_0:
vg=dωdk∣k0.v_g = \left.\frac{d\omega}{dk}\right|_{k_0}.

where: the derivative is evaluated at the packet's central wavenumber k0k_0. The two-wave beat picture makes this concrete. Superposing two waves of nearly equal kk produces an envelope factor cos⁡ ⁣(Δk2x−Δω2t)\cos\!\big(\tfrac{\Delta k}{2}x-\tfrac{\Delta\omega}{2}t\big), and following a point of constant envelope phase gives x=ΔωΔkt+constx=\dfrac{\Delta\omega}{\Delta k}t+\text{const} — the envelope itself travels at Δω/Δk\Delta\omega/\Delta k. Narrowing the band (Δk→0\Delta k\to 0) turns that ratio into the derivative dω/dkd\omega/dk, which is exactly vgv_g. Since a packet's energy sits where the envelope is large, vgv_g, not vpv_p, is the physically meaningful "speed of the wave" for any localized signal.

The dispersion relation ω(k)\omega(k) decides everything. It is fixed by the medium (tension and density for a string, elastic constants for sound, Maxwell's equations for light in vacuum), and its shape tells you at once whether the two velocities agree.

  • Non-dispersive: ω=vk\omega=vk with vv constant gives vp=vv_p=v and vg=vv_g=v — every wavenumber travels at the same speed, so a packet keeps its shape.
  • Dispersive: ω(k)\omega(k) is nonlinear, so vp=ω/kv_p=\omega/k varies with kk and in general vg≠vpv_g\neq v_p; a packet built from a band of kk's spreads out because its components drift apart in phase.

A useful bridge between the two velocities, when vp(k)v_p(k) is known instead of ω(k)\omega(k), comes from writing ω=vpk\omega=v_p k and differentiating:

vg=vp+kdvpdk.v_g = v_p + k\frac{dv_p}{dk}.

where: the second term vanishes exactly when vpv_p is kk-independent, recovering vg=vpv_g=v_p; if vpv_p falls with kk ("normal dispersion"), then vg<vpv_g<v_p.

Figure
Two wave packets after travelling the same distance one keeping its narrow shape on a non dispersive string and one spread wide on a dispersive medium
Same travel distance, two outcomes non-dispersive string: shape preserved v_g = v_p, same width dispersive medium: packet widens v_g different from v_p, envelope spreads
Derivation AGroup velocity from a superposed two-wave beat

The goal is to show, using only the addition of two cosine waves and no calculus beyond a single limiting step, that the envelope of a beating pair of waves travels at Δω/Δk\Delta\omega/\Delta k, and that this ratio becomes the derivative dω/dkd\omega/dk once the band of wavenumbers is narrowed to a point — establishing vg=dω/dkv_g=d\omega/dk as the speed of energy transport rather than an assumed definition.

Step 1. Superpose two waves of equal amplitude with slightly different wavenumber and frequency, k1=k0−Δk2k_1=k_0-\tfrac{\Delta k}{2}, k2=k0+Δk2k_2=k_0+\tfrac{\Delta k}{2}, and similarly ω1,ω2\omega_1,\omega_2 about ω0\omega_0: y=Acos⁡(k1x−ω1t)+Acos⁡(k2x−ω2t)y=A\cos(k_1x-\omega_1t)+A\cos(k_2x-\omega_2t).

Step 2. Use the cosine sum identity to factor this into carrier times envelope: y=2Acos⁡ ⁣(Δk2x−Δω2t)cos⁡(k0x−ω0t)y=2A\cos\!\big(\tfrac{\Delta k}{2}x-\tfrac{\Delta\omega}{2}t\big)\cos(k_0x-\omega_0t). The second factor is the fast carrier oscillating at k0,ω0k_0,\omega_0; the first factor is the slow envelope, oscillating at the much smaller Δk,Δω\Delta k,\Delta\omega.

Step 3. Track a point of constant envelope phase, i.e. hold Δk2x−Δω2t=const\tfrac{\Delta k}{2}x-\tfrac{\Delta\omega}{2}t=\text{const}. Solving for xx gives x=ΔωΔkt+constx=\dfrac{\Delta\omega}{\Delta k}t+\text{const}, so the envelope pattern moves at speed Δω/Δk\Delta\omega/\Delta k — this is the beat pattern's velocity, distinct from the carrier's phase velocity ω0/k0\omega_0/k_0.

Step 4. Let the band narrow, Δk→0\Delta k\to 0, with k1,k2k_1,k_2 both approaching a genuine wave packet's central wavenumber k0k_0. The ratio Δω/Δk\Delta\omega/\Delta k then becomes, by definition of the derivative, dω/dkd\omega/dk evaluated at k0k_0. Since the envelope is where the packet's energy is concentrated, this derivative is the group velocity vg=dωdk∣k0v_g=\left.\dfrac{d\omega}{dk}\right|_{k_0} — the actual transport speed of a realistic, localized signal.

Worked example

Setup. Reconsider the two dispersion relations from the Pass-1 article and extend them with one further check. (a) A string obeys ω(k)=v0k\omega(k)=v_0k with v0=20 m/sv_0=20\ \text{m/s}; find vp,vgv_p,v_g at k=5 rad/mk=5\ \text{rad/m}. (b) Deep-water surface waves obey ω(k)=gk\omega(k)=\sqrt{gk} with g=9.8 m/s2g=9.8\ \text{m/s}^2; find vp,vgv_p,v_g at k0=0.5 rad/mk_0=0.5\ \text{rad/m}, and confirm vg=vp+k dvp/dkv_g=v_p+k\,dv_p/dk.

Step 1. Non-dispersive string: vp=ω/k=v0k/k=v0=20 m/sv_p=\omega/k=v_0k/k=v_0=20\ \text{m/s}, and vg=dω/dk=d(v0k)/dk=v0=20 m/sv_g=d\omega/dk=d(v_0k)/dk=v_0=20\ \text{m/s}. Both speeds equal 20 m/s20\ \text{m/s}, confirming ω=v0k\omega=v_0k is linear and the string is non-dispersive; a packet here keeps its shape indefinitely.

Step 2. Deep-water phase velocity: ω(k0)=(9.8)(0.5)=4.9=2.214 rad/s\omega(k_0)=\sqrt{(9.8)(0.5)}=\sqrt{4.9}=2.214\ \text{rad/s}, so vp=ω/k0=2.214/0.5=4.427 m/sv_p=\omega/k_0=2.214/0.5=4.427\ \text{m/s}.

Step 3. Deep-water group velocity: dω/dk=12g/kd\omega/dk=\tfrac{1}{2}\sqrt{g/k}, so at k0=0.5k_0=0.5, vg=129.8/0.5=1219.6=12(4.427)=2.214 m/sv_g=\tfrac{1}{2}\sqrt{9.8/0.5}=\tfrac{1}{2}\sqrt{19.6}=\tfrac{1}{2}(4.427)=2.214\ \text{m/s}. Note vg=12vpv_g=\tfrac12 v_p — the signature result for deep-water gravity waves.

Step 4. Cross-check with the bridge formula. Since vp(k)=g/kv_p(k)=\sqrt{g/k}, dvp/dk=−12g k−3/2=−vp2kdv_p/dk=-\tfrac12\sqrt{g}\,k^{-3/2}=-\dfrac{v_p}{2k}, so vp+k dvp/dk=vp−vp2=vp2=2.214 m/sv_p+k\,dv_p/dk=v_p-\tfrac{v_p}{2}=\tfrac{v_p}{2}=2.214\ \text{m/s}, matching Step 3 exactly.

The water-wave packet spreads as it travels, since vg≠vpv_g\neq v_p there, while the string packet does not, since vg=vp=20 m/sv_g=v_p=20\ \text{m/s}.

Competitive stretch

For a relation of the form ω=Ak2\omega=Ak^2 (found for some bending-wave and quantum-particle-like problems), vp=Akv_p=Ak and vg=dω/dk=2Ak=2vpv_g=d\omega/dk=2Ak=2v_p — here the group velocity exceeds the phase velocity, the opposite ordering from the water-wave case. The sign of dvp/dkdv_p/dk, not just whether it is zero, sets whether vgv_g sits above or below vpv_p.

Common traps

  • Assuming vg=vpv_g=v_p always; it only holds for a linear ω=vk\omega=vk — always inspect the functional form of ω(k)\omega(k) first.
  • Computing vgv_g by dividing ω(k0)\omega(k_0) by k0k_0; that formula gives vpv_p, not vgv_g. Group velocity needs differentiation of ω\omega with respect to kk, evaluated afterward at k0k_0.
  • Forgetting that vgv_g, not vpv_p, is the speed of energy and information transport for a real, localized pulse — "the speed of the wave" in an experiment means vgv_g.
  • Treating pulse-spreading in a dispersive medium as an error or noise; it is the expected, correct consequence of ω(k)\omega(k) being nonlinear, not something to be corrected away.

Ask the tutor: if differentiating ω(k)\omega(k) to get vgv_g, or seeing physically why vg≠vpv_g\neq v_p makes a packet spread, still feels shaky, ask the AI tutor to work a third dispersion relation and interpret the group velocity.

Why is group velocity the one that matters for signals, if phase velocity is the one in the basic wave formula?

Because a real signal is never a single infinite plane wave — it is a localized pulse or packet built from a band of wavenumbers, and its energy and information sit in the envelope, not in any one internal crest. The envelope moves at vg=dω/dkv_g=d\omega/dk, so that is the speed at which you could actually clock a pulse arriving, or a message being sent. vpv_p describes only how the internal ripples slide under that envelope; it can even exceed cc in some media without transporting anything faster than light, precisely because it isn't the transport speed.

If v_p and v_g both come from the same omega of k, why do they ever disagree?

vp=ω/kv_p=\omega/k is a ratio evaluated at one point, while vg=dω/dkv_g=d\omega/dk is a slope at that point — and a ratio and a slope only match when the function is a straight line through the origin, i.e. ω=vk\omega=vk. As soon as ω(k)\omega(k) curves (any nonlinear dependence, like gk\sqrt{gk} or Ak2Ak^2), the local slope of the curve differs from the ratio ω/k\omega/k to that point, so vg≠vpv_g\neq v_p. The dispersion relation's shape is the whole story.

Is a dispersive medium doing something wrong physically, since the packet loses its shape?

No — dispersion is a normal, well-defined medium property, not a malfunction. It arises whenever different wavenumbers genuinely experience different restoring forces or propagation physics in that medium, so they are entitled to travel at different phase speeds. Once you accept ω(k)\omega(k) is nonlinear for a given medium, pulse-spreading is a correct and predictable consequence, calculable exactly from vg(k)v_g(k) across the packet's band — engineers even use it deliberately, for example to compress or stretch optical pulses in fibre-optic systems.

Before this

Where this leads