Antenna models — reading order
- Maxwell’s equations
- Retarded potentials
- Near-field / far-field boundary
- Far-field retarded potentials
- Array pattern multiplication
- Dipole power gain patterns (this article)
Introduction
You have almost certainly seen the short-dipole pattern: nulls along the wire, maximum broadside. We will derive the normalised power patterns for the Hertzian dipole, the half-wave dipole, and a longer standing-wave wire, and then plot them. One popular shortcut—writing \(g(\theta)\propto\sin^3\theta\) for the half-wave case—is only approximate near broadside. Below we use the exact closed form.
Motive
Why start here? Dipoles have closed-form patterns, they show up as elements in many arrays, and their nulls and lobes are easy to recognise. If you can reproduce Figures 4–9 from the listing, the “element factor” in the array articles will look familiar rather than abstract.
Technical development
Hertzian (infinitesimal) dipole
For a \(z\)-directed current moment with \(L\ll\lambda\), the far-field power pattern (normalised to unit peak) is
\[g_{\mathrm{H}}(\theta)=\sin^2\theta.\]Nulls lie along the wire (\(\theta=0,\pi\)); the maximum is in the equatorial plane.
Half-wave dipole
With a sinusoidal standing-wave current on a wire of length \(L=\lambda/2\), the exact normalised pattern is
\[g_{\lambda/2}(\theta)=\left[\frac{\cos\bigl(\frac{\pi}{2}\cos\theta\bigr)}{\sin\theta}\right]^2,\]with the removable singularity at \(\theta=0,\pi\) taken as zero by continuity. The approximate form \(\sin^3\theta\) is not this function.
General standing-wave length
\[g_L(\theta)\propto\left[\frac{\cos\bigl(kh\cos\theta\bigr)-\cos(kh)}{\sin\theta}\right]^2, \qquad kh=\pi L/\lambda.\]For \(L=2.5\lambda\) several lobes appear. That multilobe picture is good practice before you meet grating lobes on arrays.
How this achieves the motive
Those formulas are exactly what the polar and 3-D figures plot. Once you have drawn them yourself, an “element factor” in an array product is just this angular function.
Sample simulation
import numpy as np
import matplotlib.pyplot as plt
def hertzian_g(theta):
g = np.sin(theta) ** 2
return g / np.max(g)
def halfwave_g(theta):
num = np.cos(0.5 * np.pi * np.cos(theta))
den = np.sin(theta)
g = np.ones_like(theta)
mask = np.abs(den) > 1e-12
g[mask] = (num[mask] / den[mask]) ** 2
g[~mask] = 0.0
return g / np.max(g)
def standing_wave_g(theta, L_over_lambda):
kh = np.pi * L_over_lambda
num = np.cos(kh * np.cos(theta)) - np.cos(kh)
den = np.sin(theta)
g = np.zeros_like(theta)
mask = np.abs(den) > 1e-12
g[mask] = (num[mask] / den[mask]) ** 2
return g / np.max(g)
def polar_eplane(g_fn, title):
theta = np.linspace(0, np.pi, 721)
g = g_fn(theta)
fig, ax = plt.subplots(subplot_kw=dict(projection="polar"), figsize=(6, 5))
ax.set_theta_zero_location("N"); ax.set_theta_direction(-1)
ax.plot(theta, g); ax.plot(2*np.pi - theta, g)
ax.set_ylim(0, 1.05); ax.set_title(title)
return fig
def pattern_3d(g_fn, title):
theta = np.linspace(0, np.pi, 120)
phi = np.linspace(0, 2*np.pi, 160)
Th, Ph = np.meshgrid(theta, phi, indexing="ij")
R = g_fn(Th)
X = R*np.sin(Th)*np.cos(Ph); Y = R*np.sin(Th)*np.sin(Ph); Z = R*np.cos(Th)
fig = plt.figure(figsize=(6, 5))
ax = fig.add_subplot(111, projection="3d")
ax.plot_surface(X, Y, Z, rstride=2, cstride=2, cmap="viridis", linewidth=0)
ax.set_title(title)
return fig
for name, fn in (("Hertzian", hertzian_g), ("Half-wave", halfwave_g), ("L=2.5λ", lambda th: standing_wave_g(th, 2.5))):
polar_eplane(fn, name)
pattern_3d(hertzian_g, "Hertzian 3-D")
plt.show()
Sample results






Compare Figures 4 and 6 near broadside: similar, but not identical—the half-wave beam is slightly narrower. Figure 8 shows the multilobe structure of a long wire.
Next topic
Dipoles are elements. To place many of them on a lattice, return to array pattern multiplication or the phased-array series.
References
[1] Orfanidis, EWA. [2] Balanis, Antenna Theory.