A dispersion relation describes how the angular frequency \(\omega\) depends on the wavenumber \(k\). It is usually written as
\[
\omega=\omega(k).
\]
Once this relation is known, two important velocities can be defined. The first is the phase velocity,
\[
v_p=\frac{\omega}{k},
\]
which tells how individual crests or phase fronts move. The second is the group velocity,
\[
v_g=\frac{d\omega}{dk},
\]
which tells how a wave packet or envelope moves.
These two velocities are equal only in a non-dispersive medium. For example, if
\[
\omega=c\,k,
\]
then
\[
v_p=\frac{\omega}{k}=\frac{ck}{k}=c
\]
and
\[
v_g=\frac{d}{dk}(ck)=c.
\]
Since both are equal to the same constant, all Fourier components move together and a packet does not spread.
In a dispersive medium, the situation changes because \(\omega(k)\) is not linear in \(k\). Then
\[
v_p \neq v_g.
\]
This means the carrier oscillations and the packet envelope move differently. Over time, the packet can distort or spread. That is one of the defining signatures of dispersion.
A classic example is deep-water gravity waves, where
\[
\omega=\sqrt{gk}.
\]
In this case,
\[
v_p=\frac{\omega}{k}=\sqrt{\frac{g}{k}},
\]
while
\[
v_g=\frac{d}{dk}\sqrt{gk}
=\frac{1}{2}\sqrt{\frac{g}{k}}
=\frac{1}{2}v_p.
\]
So the group velocity is only half the phase velocity. This explains why wave crests can move through a packet while the whole group travels more slowly.
Another useful example is a quadratic relation such as
\[
\omega=k+0.2k^2.
\]
Then
\[
v_p=\frac{k+0.2k^2}{k}=1+0.2k,
\]
and
\[
v_g=\frac{d}{dk}(k+0.2k^2)=1+0.4k.
\]
Here the phase and group velocities differ increasingly as \(k\) grows, so dispersion becomes more noticeable at larger wavenumbers.
This calculator accepts a custom \(\omega(k)\), computes \(\omega\), \(v_p\), and \(v_g\), and classifies the relation as non-dispersive or dispersive over the selected interval. Because a symbolic derivative is not always available for arbitrary user input, the group velocity is estimated numerically.
The main physical idea is simple: the shape of \(\omega(k)\) determines how different spectral components propagate. Linear \(\omega(k)\) gives non-dispersive behavior, while nonlinear \(\omega(k)\) leads to phase-group separation and wave-packet spreading.