Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Light as an Electromagnetic Wave

Syracuse University
Source
%matplotlib widget
import numpy as np 
import matplotlib as mpl
import matplotlib.pyplot as plt
from ipywidgets import *

plt.style.use('dark_background')

fontsize = 14
mpl.rcParams.update(
    {
        "text.usetex": False,
        "figure.figsize": (9, 6),
        # "figure.autolayout": True,
        # "font.family": "serif",
        # "font.serif": "georgia",
        # 'mathtext.fontset': 'cm',
        "lines.linewidth": 1.5,
        "font.size": fontsize,
        "xtick.labelsize": fontsize,
        "ytick.labelsize": fontsize,
        "legend.fancybox": True,
        "legend.fontsize": fontsize,
        "legend.framealpha": 0.7,
        "legend.handletextpad": 0.5,
        "legend.labelspacing": 0.2,
        "legend.loc": "best",
        "axes.edgecolor": "#b0b0b0",
        "grid.color": "#707070",  # grid color"
        "xtick.color": "#b0b0b0",
        "ytick.color": "#b0b0b0",
        "savefig.dpi": 80,
        "pdf.compression": 9,
    }
)

2What is light?

If we are to understand lasers and optomechanics, we must first have a solid grasp of the the nature of light. What is light? is a simple question without a simple answer.

Loosely, light is an excitation in the electromagnetic field which permeates the universe, carrying energy and information that can be directly sensed by the human eye. Humanity’s close relationship with light drove us to study it closely, teaching us first the secrets of electromagnetism, then plunging us into the unintuitive world of quantum mechanics.

2.1The Duality of Light

Light is commonly described to be both an electromagnetic wave and particle. This is our way of relating light to waves and particles, two objects humans can easily understand, and sweeping under the rug the complexities. In reality, light is neither a wave nor a particle, but describing light as a complex traveling oscillation in the electromagnetic wave with indeterminant wavelength is not very useful for most people.

A good intuition can be provided by seeing the wave view vs photon view shown in this interactive demo: Electromagnetic Spectrum.

3Electromagnetism: The Wave Equation

Maxwell showed that light was an electromagnetic wave, resulting from the interplay of his famous equations in a vacuum (no charges or currents):

E=0\begin{align} \nabla \cdot \boldsymbol{E} &= 0 \end{align}
B=0\begin{align} \nabla \cdot \boldsymbol{B} &= 0 \end{align}
×E=Bt\begin{align} \nabla \times \boldsymbol{E} &= - \dfrac{\partial \boldsymbol{B}}{\partial t} \end{align}
×B=1c2Et\begin{align} \nabla \times \boldsymbol{B} &= \dfrac{1}{c^2} \dfrac{\partial \boldsymbol{E}}{\partial t} \end{align}

where E\boldsymbol{E} is the electric field vector, B\boldsymbol{B} is the magnetic field vector, ×\nabla \times is a spatial cross-product partial derivative, or curl operator familiar from undergrad E&M, and cc is the speed of light.

If we take the curl of the equations in (3):

××E=×(Bt)=t(×B)\begin{align} \nabla \times \nabla \times \boldsymbol{E} &= \nabla \times \left(- \dfrac{\partial \boldsymbol{B}}{\partial t}\right)\\ &= - \dfrac{\partial}{\partial t} \left(\nabla \times \boldsymbol{B} \right) \end{align}

Subbing in Eq. (4) to the right hand side, and using the curl-of-curl identity

××E=(E)2E\nabla \times \nabla \times \boldsymbol{E} = \nabla (\nabla \cdot \boldsymbol{E}) - \nabla^2 \boldsymbol{E}

plus Eq. (1) yields

2E=1c22Et2\begin{align} \nabla^2 \boldsymbol{E} = \dfrac{1}{c^2} \dfrac{\partial^2 \boldsymbol{E} }{\partial t^2} \end{align}
2B=1c22Bt2\begin{align} \nabla^2 \boldsymbol{B} = \dfrac{1}{c^2} \dfrac{\partial^2 \boldsymbol{B} }{\partial t^2} \end{align}

3.1One-dimensional Plane-wave solution to the wave equation

We are going to solve this differential equation in the classic way: by already knowing the answer. This equation is Helmholtz’s equation.

First, we’ll solve Eqs. (7) and (8) in one dimension, and focus on the electric field at first. We can break up electric field

E=(Ex,Ey,Ez)\begin{align} \boldsymbol{E} = (E_x, E_y, E_z) \end{align}

Recall that the Laplacian

2=(2x2,2y2,2z2)\nabla^2 = \left(\dfrac{\partial^2}{\partial x^2}, \dfrac{\partial^2}{\partial y^2}, \dfrac{\partial^2}{\partial z^2}\right)

From Gauss’s Law in a vacuum E=0\nabla \cdot \boldsymbol{E} = 0, we know that an electric field cannot propogate in the direction it is pointing. The wave must propogate in a transverse direction.

We will solve for an electric-field in the xx-direction ExE_x that is propogating in the zz-direction:

2Exz2=1c22Ext2\begin{align} \dfrac{\partial^2 E_x}{\partial z^2} = \dfrac{1}{c^2} \dfrac{\partial^2 E_x }{\partial t^2} \end{align}

We’ll first employ separation of variables.
We’ll separate the solution for ExE_x into a pure time and spatial component:

Ex(z,t)=Z(z)T(t)\begin{align} E_x(z,t) = Z(z) T(t) \end{align}

Applying this separated function

2Zz2T(t)=1c22Tt2Z(z)\begin{align} \dfrac{\partial^2 Z}{\partial z^2} T(t) = \dfrac{1}{c^2} \dfrac{\partial^2 T }{\partial t^2} Z(z) \end{align}

Rearranging:

1Z2Zz2=1c21T2Tt2\begin{align} \dfrac{1}{Z} \dfrac{\partial^2 Z}{\partial z^2} = \dfrac{1}{c^2} \dfrac{1}{T} \dfrac{\partial^2 T }{\partial t^2} \end{align}

Both sides of Eq. (14) are independent ordinary differential equations, and will equal the same constant.
For convenience later, we will call this constant k2-k^2.
Then we have

1Z2Zz2=k2\begin{align} \dfrac{1}{Z} \dfrac{\partial^2 Z}{\partial z^2} = -k^2 \end{align}
1c21T2Tt2=k2\begin{align} \dfrac{1}{c^2} \dfrac{1}{T} \dfrac{\partial^2 T }{\partial t^2} = -k^2 \end{align}

We can then offer two oscillating solutions for Eq. (15):

Z(z)=eikz,Z(z)=eikz\begin{align} Z(z) = e^{i k z}, \qquad Z(z) = e^{-i k z} \end{align}

Similarly for Eq. (16), but we define a new constant ω=kc\omega = k c for simplicity:

T(t)=eiωt,T(t)=eiωt\begin{align} T(t) = e^{i \omega t}, \qquad T(t) = e^{-i \omega t} \end{align}

Combining the above solutions back together using (12) gives us the following general solution:

Ex(z,t)=Aei(kzωt)+Bei(kzωt)Cei(kz+ωt)+Dei(kz+ωt)\begin{align} E_x(z,t) = &A e^{i (k z - \omega t)} + B e^{i (-k z - \omega t)}\\ &C e^{i (k z + \omega t)} + D e^{i (-k z + \omega t)} \end{align}

with complex coefficients A,B,C,DA,B,C,D. The constant kk is the wave-number in units of inverse meters,
while the constant ω\omega is the angular frequency in units of radians / second.

Eq.(19) is generally complex-valued.
However, an electric field must take on a real value, as it is an observable quantity. To reconcile that, our coefficients A,B,C,DA,B,C,D must conspire to make ExE_x real in the end. Most simply, one could set D=AD = A^* and C=BC = B^*, and we’d instantly have

Ex(z,t)=Acos(kzωt+ϕ+)+Bcos(kzωt+ϕ) Ex(z,t)=Acos(kzωt+ϕ+)+z traveling field+Bcos(kzωt+ϕ)z traveling field\begin{align} E_x(z,t) = &A' \cos(k z - \omega t + \phi_+) + B' \cos(-k z - \omega t + \phi_-)\\~\\ E_x(z,t) = &\underbrace{A' \cos( k z - \omega t + \phi_+)}_{+z~\text{traveling field}} + \underbrace{B' \cos( -k z - \omega t + \phi_-)}_{-z~\text{traveling field}} \end{align}

where I’ve assumed the factor of 1/2 into some new AA' and BB' coefficients, as well as some phases from the complex angles ϕ+\phi_{+} and ϕ\phi_{-}.
We’ve written the solution this way to emphasize that time tt always propogates in one direction, but the wave direction kk can have either sign.
In this case, AA' and BB' would be real-valued to maintain a real electric field.

The two components of the ExE_x solution represent one field propogating in the positive zz-direction, and the other field propogating in the negative zz-direction.

We mention here that these cosine wave solutions are not the only solutions, but they can be summed into any solution that depends on a variable u=kzωtu = k z - \omega t. See Feynman’s Lecture on Physics Volume II Chapter 20, or Griffith’s Electrodynamics Chapter 9.1.1.

Source
fig = plt.figure()
ax = fig.add_subplot()

amp1 = 1.0
amp2 = 1.0
phase1 = 0.0
phase2 = 0.0
kk = 2 * np.pi * 1
omega = 2 * np.pi * 1
time = 0 

xx = np.linspace(-1.5, 1.5, 1000)
y1 = amp1 * np.cos(kk * xx - omega * time + phase1)
y2 = amp2 * np.cos(-kk * xx - omega * time + phase2)
y3 = y1 + y2

eline1, = ax.plot(xx, y1, label="A' field (+z)")
eline2, = ax.plot(xx, y2, label="B' field (-z)")
eline3, = ax.plot(xx, y3, label="A' + B' field")

ax.set_xlim([xx[0], xx[-1]])
ax.set_ylim([-2, 2])

ax.legend(loc="upper right")
# ax.set_axis_off()
plt.tight_layout()

def update_standing_waves(
    time_slider_value=0, 
    amp1_slider_value=amp1,
    amp2_slider_value=amp2,
    phase1_slider_value=phase1,
    phase2_slider_value=phase2,
):
    """
    Create waves plot with synchronized cosine and sine displays.
    """
    time = time_slider_value
    amp1 = amp1_slider_value
    amp2 = amp2_slider_value
    phase1 = phase1_slider_value
    phase2 = phase2_slider_value
    
    # Calculate sine
    newy1 = amp1 * np.cos(omega * time - kk * xx + phase1)
    newy2 = amp2 * np.cos(omega * time + kk * xx + phase2)
    newy3 = newy1 + newy2

    eline1.set_ydata(newy1)
    eline2.set_ydata(newy2)
    eline3.set_ydata(newy3)
    
    fig.canvas.draw_idle()
    return

# Create interactive widget
time_slider = FloatSlider(
    value=0,
    min=0,
    max=1,
    step=0.01,
    description='time [s]:',
    continuous_update=True,  # Only update on release for better performance
    orientation='horizontal',
    readout=True,
    readout_format='.3f',
)
amp1_slider = FloatSlider(
    value=amp1,
    min=0,
    max=1,
    step=0.01,
    description="A':",
    continuous_update=True,  # Only update on release for better performance
    orientation='horizontal',
    readout=True,
    readout_format='.3f',
)
amp2_slider = FloatSlider(
    value=amp2,
    min=0,
    max=1,
    step=0.01,
    description="B':",
    continuous_update=True,  # Only update on release for better performance
    orientation='horizontal',
    readout=True,
    readout_format='.3f',
)
phase1_slider = FloatSlider(
    value=phase1,
    min=-np.pi,
    max=np.pi,
    step=0.01,
    description=r"$\phi_+$:",
    continuous_update=True,  # Only update on release for better performance
    orientation='horizontal',
    readout=True,
    readout_format='.3f',
)
phase2_slider = FloatSlider(
    value=phase2,
    min=-np.pi,
    max=np.pi,
    step=0.01,
    description=r"$\phi_-$:",
    continuous_update=True,  # Only update on release for better performance
    orientation='horizontal',
    readout=True,
    readout_format='.3f',
)


interact(
    update_standing_waves, 
    time_slider_value=time_slider, 
    amp1_slider_value=amp1_slider,
    amp2_slider_value=amp2_slider,
    phase1_slider_value=phase1_slider,
    phase2_slider_value=phase2_slider
)
plt.show()
Loading...
Loading...

Accompanying Magnetic Field Plane-Wave Solution

Recall that our electric field in the x-direction was

Ex(z,t)=Acos(kzωt+ϕ+)+Bcos(kzωt+ϕ)\begin{align*} E_x(z,t) = &A' \cos(k z - \omega t + \phi_+) + B' \cos(-k z - \omega t + \phi_-) \end{align*}

To get the magnetic field that accompanies Eq. (20), we go back to Faraday’s Law ×E=Bt\nabla \times \boldsymbol{E} = - \dfrac{\partial \boldsymbol{B}}{\partial t}.

For ×E\nabla \times \boldsymbol{E} we have (assuming EyE_y and Ez=0E_z = 0, and ϕ+=ϕ=0\phi_+ = \phi_- = 0):

×E=x^y^z^xyzExEyEz=(y^zz^y)Ex=y^k[Asin(kzωt)+Bsin(kzωt)]\begin{align} \nabla \times \boldsymbol{E} &= \begin{vmatrix} \boldsymbol{\hat{x}} & \boldsymbol{\hat{y}} & \boldsymbol{\hat{z}}\\[6pt] \dfrac{\partial}{\partial x} & \dfrac{\partial}{\partial y} & \dfrac{\partial}{\partial z} \\[12pt] E_x & E_y & E_z \end{vmatrix} \\ &= \left( \boldsymbol{\hat{y}} \dfrac{\partial}{\partial z} - \boldsymbol{\hat{z}} \dfrac{\partial}{\partial y} \right) E_x\\[1em] &= \boldsymbol{\hat{y}} k \Big[ -A' \sin(k z - \omega t) + B' \sin(- k z - \omega t) \Big] \end{align}

The above must equal Bt- \dfrac{\partial \boldsymbol{B}}{\partial t}, so we take the antiderivative with respect to time to recover the magnetic field B\boldsymbol{B}:

Bt=y^k[Asin(kzωt)+Bsin(kzωt)]B=y^k[1ωAcos(kzωt)+1ωBcos(kzωt)]By=kω[Acos(kzωt)Bcos(kzωt)]By=1c[Acos(kzωt)Bcos(kzωt)]\begin{align} - \dfrac{\partial \boldsymbol{B}}{\partial t} &= \boldsymbol{\hat{y}} k \Big[ -A' \sin(k z - \omega t) + B' \sin(- k z - \omega t) \Big]\\ - \boldsymbol{B} &= \boldsymbol{\hat{y}} k \Bigg[ -\dfrac{1}{\omega} A' \cos(k z - \omega t) + \dfrac{1}{\omega} B' \cos(- k z - \omega t) \Bigg]\\ \rightarrow B_y &= \dfrac{k}{\omega} \Big[ A' \cos(k z - \omega t) - B' \cos(- k z - \omega t) \Big]\\ B_y &= \dfrac{1}{c} \Big[ A' \cos(k z - \omega t) - B' \cos(- k z - \omega t) \Big] \end{align}

The below Figure Notebook-code shows the electric field alongside the magnetic field, propogating only in one direction.

Source
fig_3d = plt.figure()
ax_3d = fig_3d.add_subplot(projection='3d')

amp = 0.7
kk = 2 * np.pi * 1
omega = 2 * np.pi * 1
time = 0 
x = np.linspace(-2.5, 2.5, 1000)
y = amp * np.sin(omega * time - kk * x)
z = np.zeros_like(x)

eline, = ax_3d.plot(x, z, y, color="#ff9955", label="E-field")
bline, = ax_3d.plot(x, y, z, color="#5599ff", label="B-field")

ax_3d.plot(1.5*x, z, z, lw=0.5, color="white")
ax_3d.plot(z, np.linspace(-2*amp, 2*amp, len(z)), z, lw=0.5, color="white")
ax_3d.plot(z, z, np.linspace(-2*amp, 2*amp, len(z)), lw=0.5, color="white")

ax_3d.set_xlim([x[0], x[-1]])
ax_3d.set_ylim([-1, 1])
ax_3d.set_zlim([-1, 1])
ax_3d.set_aspect('equal')
ax_3d.legend()
ax_3d.set_axis_off()

def update_waves(
    time_slider_value=0, 
    amp_slider_value=0.7
):
    """
    Create waves plot with synchronized cosine and sine displays.
    """
    time = time_slider_value
    amp = amp_slider_value
    
    # Calculate sine
    newy = amp * np.sin(omega * time - kk * x)

    eline.set_data_3d(x, z, newy)
    bline.set_data_3d(x, newy, z)
    # efill = ax_3d.fill_between(x, z, newy, x, z, z, alpha=0.3, color="#ff9955")
    # bfill = ax_3d.fill_between(x, newy, z, x, z, z, alpha=0.3, color="#5599ff")
    
    fig_3d.canvas.draw_idle()
    return

# Create interactive widget
time_slider = FloatSlider(
    value=0,
    min=0,
    max=3,
    step=0.01,
    description='time [s]:',
    continuous_update=True,  # Only update on release for better performance
    orientation='horizontal',
    readout=True,
    readout_format='.3f',
)
amp_slider = FloatSlider(
    value=amp,
    min=0,
    max=1,
    step=0.01,
    description='amplitude:',
    continuous_update=True,  # Only update on release for better performance
    orientation='horizontal',
    readout=True,
    readout_format='.3f',
)

interact(update_waves, time_slider_value=time_slider, amp_slider_value=amp_slider)
plt.show()
Loading...
Loading...

3.2Generalization in three-dimensions

A similar derivation as the plane wave solution above can be performed for EyE_y and EzE_z.
We can define a wave-number vector k=(kx,ky,kz)\mathbf{k} = \left(k_x, k_y, k_z\right) and a radial vector r=(x,y,z)\mathbf{r} = (x, y, z).
Then kr=kxx+kyy+kzz\mathbf{k} \cdot \mathbf{r} = k_x x + k_y y + k_z z, and we can rewrite the solution in any direction:

E~=E0~ei(krωt)n^\begin{align} \tilde{ \boldsymbol{E} } = \tilde{E_0} e^{i (\mathbf{k} \cdot \mathbf{r} - \omega t)} \hat{n} \end{align}

where n^\hat{n} represents the direction the electric field points, and is often called the polarization of the electromagnetic wave.

E0~=E0eiδ\tilde{E_0} = |E_0| e^{i \delta} is a constant, and can be complex if the phase term δ\delta is nonzero.

To get the actual real electric field, the real part of the complex quantity can be taken:

E=Re(E~)\boldsymbol{E} = \mathrm{Re}(\tilde{ \boldsymbol{E} })

3.3Spherical Plane Waves

Here we introduce the concept of spherical plane waves, following the derivation in Feynman’s Lectures Volume II Chapter 20.

Flat plane waves, like we’ve introduced above, are accurate solutions for continuous sources of single rays of light, or sheets of light propogating in the same direction. However, in some cases point sources serve as the source of our electromagnetic wave, like an oscillating nucleus in a lattice, or a voltage oscillating in an antenna. These point sources correspond to a dipole moment, which emits energy that disperses over 3D space in a nontrivial way.

Here I copy the Feynman lectures derivation of spherical plane waves:

feynman_lecture_volume_2_chapter_20_spherical_wave_excerpt_1.pngfeynman_lecture_volume_2_chapter_20_spherical_wave_excerpt_2.pngfeynman_lecture_volume_2_chapter_20_spherical_wave_excerpt_3.png

As Feynman states above, The spherical wave amplitude steadily decreases as a function of the distance rr. This intuitively makes sense, as the energy from the point source becomes spread out over more space, the amplitude of the wave should decay.

The only minor difference between our plane wave solution above and Feynman’s derivation here is Feynman’s plane wave solution f(tr/c)f(t - r/c) is more general than our sinusoidal solutions. Feynman’s solution can represent any arbitrary motion in some medium, like a pulse, so long as it travels along rr at a speed cc

We can reconstruct any pulse or wave propogating along rr at a speed cc by using some sum of our sinusoids. So, our solutions are valid. The difference between spherical and plane waves can be seen in the two interactive plots below.

Source
# Create figure
fig_2d, axes = plt.subplots(1, 2, figsize=(13, 6))
colormap = 'RdBu_r'

# Create spatial grid
x = np.linspace(-2, 2, 50)
y = np.linspace(-2, 2, 50)
X, Y = np.meshgrid(x, y)

# Wave number
phase = 0
wavelength=1.0
k = 2 * np.pi / wavelength


# Plane wave
Z_plane = np.cos(k * X - phase)

# Spherical wave
R = np.sqrt(X**2 + Y**2)
R = np.where(R < 0.01, 0.01, R)
Z_spherical = np.cos(k * R - phase) / R

# Plane wave
im1 = axes[0].pcolormesh(X, Y, Z_plane, cmap=colormap, 
                         shading='gouraud', vmin=-1, vmax=1)
axes[0].set_xlabel('x', fontsize=12)
axes[0].set_ylabel('y', fontsize=12)
axes[0].set_title(f'Plane Wave (wavelength = {wavelength:.2f})', fontsize=13)
axes[0].set_aspect('equal')
axes[0].grid(True, alpha=0.3)
plt.colorbar(im1, ax=axes[0], label='Amplitude')

# Spherical wave
im2 = axes[1].pcolormesh(X, Y, Z_spherical, cmap=colormap, 
                         shading='gouraud', vmin=-2, vmax=2)
axes[1].set_xlabel('x', fontsize=12)
axes[1].set_ylabel('y', fontsize=12)
axes[1].set_title(f'Spherical Wave (wavelength = {wavelength:.2f})', fontsize=13)
axes[1].set_aspect('equal')
axes[1].grid(True, alpha=0.3)
plt.colorbar(im2, ax=axes[1], label='Amplitude')

plt.tight_layout()
# plt.show()

def plot_both_waves(wavelength=1.0, phase=0.0, colormap='RdBu_r'):
    """
    Plot plane and spherical waves side by side.
    """    
    # Wave number
    new_k = 2 * np.pi / wavelength
    
    # Plane wave
    new_Z_plane = np.cos(new_k * X - phase)
    
    # Spherical wave
    new_Z_spherical = np.cos(new_k * R - phase) / R

    im1.set_array(new_Z_plane.ravel())
    im2.set_array(new_Z_spherical.ravel())

    im1.set_cmap(colormap)
    im2.set_cmap(colormap)

    fig_2d.canvas.draw_idle()
    return

# Interactive widget for side-by-side comparison
interact(plot_both_waves,
         wavelength=FloatSlider(min=0.5, max=3.0, step=0.1, value=1.0,
                               description='Wavelength:',
                               continuous_update=True),
         phase=FloatSlider(min=0, max=2*np.pi, step=0.1, value=0.0,
                          description='Phase (rad):',
                          continuous_update=True),
         colormap=Dropdown(options=['RdBu_r', 'seismic', 'coolwarm', 'viridis', 'plasma'],
                          value='RdBu_r',
                          description='Colormap:')
);
plt.show()
Loading...
Loading...
Source
fig_1d = plt.figure(figsize=(12, 5))

# Create figure
x = np.linspace(0, 10, 500)
k = 2 * np.pi / wavelength

# Plane wave (constant amplitude)
plane = np.cos(k * x - phase)

# Spherical wave (1/r decay)
x_safe = np.where(x < 0.01, 0.01, x)
spherical = np.cos(k * x - phase) / x_safe

line1, = plt.plot(x, plane, color="#0165fc", linewidth=2, label='Plane Wave')
line2, = plt.plot(x, spherical, 'r-', linewidth=2, label='Spherical Wave (1/r decay)')
line3, = plt.plot(x, 1/x_safe, 'r--', alpha=0.5, linewidth=1, label='1/r envelope')
line4, = plt.plot(x, -1/x_safe, 'r--', alpha=0.5, linewidth=1)

plt.xlabel('Distance from source', fontsize=12)
plt.ylabel('Amplitude', fontsize=12)
plt.title(f'Cross-Section Comparison (wavelength = {wavelength:.2f})', fontsize=13)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=11)
plt.xlim(0, 6)
plt.ylim(-3, 3)
plt.tight_layout()


def plot_cross_section(wavelength=1.0, phase=0.0):
    """
    Plot 1D cross-sections of plane and spherical waves.
    """
    new_k = 2 * np.pi / wavelength
    
    # Plane wave (constant amplitude)
    new_plane = np.cos(new_k * x - phase)
    
    # Spherical wave (1/r decay)
    new_spherical = np.cos(new_k * x - phase) / x_safe
    
    line1.set_ydata(new_plane)
    line2.set_ydata(new_spherical)

    fig_1d.canvas.draw_idle()

# Interactive cross-section plot
interact(plot_cross_section,
         wavelength=FloatSlider(min=0.5, max=3.0, step=0.1, value=1.0,
                               description='Wavelength:',
                               continuous_update=True),
         phase=FloatSlider(min=0, max=2*np.pi, step=0.1, value=0.0,
                          description='Phase (rad):',
                          continuous_update=True));
plt.show()
Loading...
Loading...

Plane Waves, Lasers, and Wavefronts

Here we take a brief step back and consider a laser. A laser is a directed coherent beam of light, and is not well described by plane-wave solutions.

We will find later on that the spherical wave representation is extremely useful for describing lasers propogation close to the axis of propogation. The spherical peaks and troughs form what is called a wavefront, a countour of equal phase forming circles around the point source. More will be said when we discuss lasers and the wave equation solutions using the axial approximation.

3.4Poynting Vectors

The following is from Griffith’s Chapter 8.1 In your Electrodynamics class, you should have learned that electric and magnetic fields contain and transport energy and momentum.

The energy stored in the field is just the volume integral V\mathcal{V} over the squared fields magnitude:

u=12(ϵ0E2+1μ0B2)\begin{align} u = \dfrac{1}{2} \left( \epsilon_0 E^2 + \dfrac{1}{\mu_0} B^2 \right) \end{align}

where uu is the energy density per unit volume, ϵ0\epsilon_0 is the permittivity of free space, μ0\mu_0 is the magnetic permeability of free space, and E2E^2 and B2B^2 are the squared electric and magnetic field magnitudes.

The energy radiated away represents the dynamic energy loss over time from our integrated volume. This is described by the Poynting Vector S\boldsymbol{S}:

S=1μ0(E×B)\begin{align} \boxed{ \boldsymbol{S} = \dfrac{1}{\mu_0}(\boldsymbol{E} \times \boldsymbol{B}) } \end{align}

The Poynting vector S\boldsymbol{S} is an energy density flux, and has units of energy per unit time per unit area, or [Jsm2]=[Wm2]\mathrm{ \left[ \dfrac{J}{s m^2} \right] = \left[ \dfrac{W}{m^2}\right] } where J\mathrm{J} is joules and W\mathrm{W} is watts. It can be thought of as a way of quantifying energy exchange between energy stored locally in fields and energy radiated away (or toward) the local volume.

Solution to Exercise 1 #

This solution comes from Griffith’s E&M Section 9.2.3:

From our electric and magnetic field wave equation solutions Eqs. (20) and (23), we focus on the field propogating in the +z^+\hat{z} direction, and ignore the phase constant term by setting ϕ+=0\phi_+ = 0, letting a magnitude term E0=AE_0 = A' .

This gives us our nice phasor expressions:

E=E0cos(kzωt)x^B=E0ccos(kzωt)y^\begin{align} \boldsymbol{E} &= E_0 \cos(k z - \omega t) \hat{x} \\ \boldsymbol{B} &= \dfrac{ E_0 }{c} \cos(k z - \omega t) \hat{y} \end{align}

Then the Poynting vector becomes

S=1μ0(E×B)S=1μ0(E0cos(kzωt)x^×E0ccos(kzωt)y^)S=E02cμ0cos(kzωt)2(x^×y^)S=cϵ0E02cos(kzωt)2z^\begin{align} \boldsymbol{S} &= \dfrac{1}{\mu_0}(\boldsymbol{E} \times \boldsymbol{B}) \\ \boldsymbol{S} &= \dfrac{1}{\mu_0}\left( E_0 \cos(k z - \omega t) \hat{x} \times \dfrac{ E_0 }{c} \cos(k z - \omega t) \hat{y} \right)\\ \boldsymbol{S} &= \dfrac{ E_0^2 }{ c \mu_0 } \cos(k z - \omega t)^2 (\hat{x} \times \hat{y} )\\ \boldsymbol{S} &= c \epsilon_0 E_0^2 \cos(k z - \omega t)^2 \, \hat{z} \end{align}

where we recall the relation c2=1ϵ0μ0c^2 = \dfrac{1}{\epsilon_0 \mu_0} in the final line. Note that the Poynting vector value oscillates like cos(kzωt)2\cos(k z - \omega t)^2, so the value is sometimes zero and sometimes peaks at cϵ0E02c \epsilon_0 |E_0|^2.

The stored energy uu in the plane wave relies on E2E^2 and B2B^2:

E2=E02cos(kzωt)2B2=(E0c)2cos(kzωt)2\begin{align} E^2 &= E_0^2 \cos(k z - \omega t)^2 \\ B^2 &= \left( \dfrac{ E_0 }{c} \right)^2 \cos(k z - \omega t)^2 \end{align}

so we have

u=12(ϵ0E2+1μ0B2)u=12(ϵ0E02cos(kzωt)2+1μ0(E0c)2cos(kzωt)2)u=ϵ0E02cos(kzωt)2\begin{align} u &= \dfrac{1}{2} \left( \epsilon_0 E^2 + \dfrac{1}{\mu_0} B^2 \right)\\ u &= \dfrac{1}{2} \left( \epsilon_0 E_0^2 \cos(k z - \omega t)^2 + \dfrac{1}{\mu_0} \left( \dfrac{ E_0 }{c} \right)^2 \cos(k z - \omega t)^2 \right)\\ u &= \epsilon_0 E_0^2 \cos(k z - \omega t)^2 \end{align}

Note again that for a plane wave, the energy stored in the fields oscillates is sometimes exactly zero.

Comparing to Eq. (29) we get the nice relation

S=cuz^\begin{align} \boldsymbol{S} &= c u \hat{z} \end{align}

In words, this Poynting vector represents the energy transfer of a plane wave through a volume V\mathcal{V} over time. The plane wave can be thought of as propogating through some surface with area AA at a speed cc, and the product AcA c gives us our volume per unit time. Below is a screenshot from Griffith’s E&M Figure 9.12, illustrating the energy propogation of the plane wave

Screenshot from 2025-12-18 17-48-11.png

Intensity

The intensity II of light is directly related to the Poynting vector S\boldsymbol{S}. It represents the average power per unit area transfered by the light, and can be found simply by taking the average value of the Poynting vector:

I=S\begin{align} I = \langle S \rangle \end{align}

where SS is the magnitude of the Poynting vector S\boldsymbol{S}.

As we noted in Exercise 1, the Poynting vector S\boldsymbol{S} oscillates like cos(kzωt)2\cos(k z - \omega t)^2 for our plane wave solutions, and is sometimes zero and sometimes peaking. The intensity represents the average power transfer over these oscillations.

This is more useful for us, because often relevant electromagnetic oscillations are extremely fast, like in visible lasers with wavelengths on the order of 532 nanometers, the frequency of oscillation is νgreen=5.64×1014 Hz=564 THz\nu_\mathrm{green} = 5.64 \times 10^{14}~\mathrm{Hz} = 564~\mathrm{THz}.
Humans cannot yet produce electronics to directly analyze light oscillating this fast, so we are relegated to measuring the light’s power, or intensity integrated over the face of a photodiode. Radio waves, on the other hand, can often be directly analyzed, like in the movie Contact (see minute 1:59 here).

Solution to Exercise 2 #

The Poynting vector from (29) is

S=cϵ0E02cos(kzωt)2z^\begin{align} \boldsymbol{S} &= c \epsilon_0 E_0^2 \cos(k z - \omega t)^2 \, \hat{z} \end{align}

So the intensity becomes

I=cϵ0E02cos(kzωt)2I=1T0Tcϵ0E02cos(kzωt)2dt\begin{align} I &= \left\langle c \epsilon_0 E_0^2 \cos(k z - \omega t)^2 \right\rangle\\ I &= \dfrac{1}{T} \int_0^T c \epsilon_0 E_0^2 \cos(k z - \omega t)^2 dt \end{align}

where TT is the period of one oscillation for our plane wave: T=1ν=2πωT = \dfrac{1}{\nu} = \dfrac{2 \pi}{\omega}.

Here we recall a very convenient integral that we will use very often over this course:

12=12π02πcos(ϕ)2dϕ=12π02πsin(ϕ)2dϕ\begin{align} \dfrac{1}{2} = \dfrac{1}{2\pi} \int_0^{2\pi} \cos(\phi)^2 d\phi = \dfrac{1}{2\pi} \int_0^{2\pi} \sin(\phi)^2 d\phi \end{align}

Essentially, this states that the average integral over one cycle of cosine or sine squared is equal to one half. This is related to the root mean square of an average signal, we’ll explore more in depth later.

We can also state another useful integral:

0=02πcos(ϕ)sin(ϕ)dϕ\begin{align} 0 = \int_0^{2\pi} \cos(\phi) \sin(\phi) d\phi \end{align}

which represents the orthogonality of cos\cos and sin\sin over one cycle.

So, for clarity, I like to redefine our integral Eq. (35) over a phase ϕ(t)=kzωt\phi(t) = k z - \omega t We note that dt=dϕωdt = -\dfrac{d\phi}{\omega}, and that ϕ(t=0)=kz\phi(t = 0) = k z and ϕ(t=T)=kzωt=kz2π\phi(t = T) = k z - \omega t = k z - 2 \pi. Subbing in all of this yields

I=ω2πkzkz2πcϵ0E02cos(ϕ)2(dϕω)I=cϵ0E0212π02πcos(ϕ)2dϕI=cϵ0E0212π02πcos(ϕ)2dϕ\begin{align} I &= \dfrac{\omega}{2\pi} \int_{k z}^{k z - 2 \pi} c \epsilon_0 E_0^2 \cos(\phi)^2 \left(-\dfrac{d\phi}{\omega}\right)\\ I &= -c \epsilon_0 E_0^2 \dfrac{1}{2\pi} \int_{0}^{-2 \pi} \cos(\phi)^2 d\phi \\ I &= c \epsilon_0 E_0^2 \dfrac{1}{2\pi} \int_{0}^{2 \pi} \cos(\phi)^2 d\phi \\ \end{align}
I=12cϵ0E02\boxed{ I = \dfrac{1}{2} c \epsilon_0 E_0^2 }

This is equation 9.63 from Griffith’s E&M, and represents the plane wave intensity.

Radiation Pressure

Radiation pressure represents the momentum-transfer from light electric fields to objects the light touches. Pressure is expressed in terms of force per unit area, and so can be simply related to our intensity value II, which we recall has units of watts per unit area. Remember that power P=FvP = \boldsymbol{F} \cdot \boldsymbol{v}, so if we assume v=cv^\boldsymbol{v} = c \hat{v}, and let P=IA P = I A where AA is some area, we can write a radiation pressure pradp_\mathrm{rad} term:

prad=Icosθc\begin{align} p_\mathrm{rad} = \dfrac{I \cos{\theta} }{c} \end{align}

where θ\theta is the angle of incidence of the light on the surface AA.

Often, if an entire laser beam’s power PP is incident on a surface A, we can divide out that surface and write the radiation pressure force FradF_\mathrm{rad}

Frad=Pcosθc\begin{align} F_\mathrm{rad} = \dfrac{P \cos{\theta} }{c} \end{align}

We note that Equations (40) and (41) are correct for entirely absorbed light. If the light is perfectly reflected, then we get an additional factor of 2 for the momentum change in directions.

3.5Superposition and Interference

In a complex world full of electromagnetic waves, superposition offers a simple way of understanding how to calculate the total electric field.
If I have two sources of electric fields E1,E2\vec{E_1}, \vec{E_2} over the same volume V\mathcal{V},
then the total electric field Etotal\vec{E}_\mathrm{total} is simply their sum:

Etotal=E1+E2\begin{align} \vec{E}_\mathrm{total} = \vec{E_1} + \vec{E_2} \end{align}

Destructive Interference

Superposition becomes especially useful for calculating the total intensity ItotalI_\mathrm{total} of two plane-wave electric fields incident upon a photodiode:

Itotal=Etotal2=E1+E22Itotal=E12+E22+E1E2+E2E1\begin{align} I_\mathrm{total} &= |\vec{E}_\mathrm{total}|^2\\ &= |\vec{E_1} + \vec{E_2}|^2\\ I_\mathrm{total} &= |\vec{E_1}|^2 + |\vec{E_2}|^2 + \vec{E_1} \cdot \vec{E_2}^* + \vec{E_2} \cdot \vec{E_1}^* \end{align}

There is a non-trivial interaction between the terms E1,E2\vec{E_1}, \vec{E_2} in the last line of (43).
If we assume that E2=E1exp(iϕ)\vec{E_2} = \vec{E_1} \exp(i \phi), then (43) becomes

Itotal=E12+E22+2E1E2cos(ϕ)\begin{align} I_\mathrm{total} &= |E_1|^2 + |E_2|^2 + 2 |E_1| |E_2| \cos(\phi) \end{align}

In this case, some of the expected total intensity ItotalI_\mathrm{total} is annihilated via destructive interference.
Not all of the intensity we expected was detected on the photodiode, because the component electric fields were out-of-phase.
If we set ϕ=0\phi = 0, then our fields are exactly in-phase and we recover all of the intensity expected.

Beatnote

This interference required both E1,E2\vec{E_1}, \vec{E_2} to have the same polarization and frequency.
If they had a different frequency ω1\omega_1 and ω2\omega_2, then we may get an intensity beatnote, where

Itotal=E12+E22+2E1E2cos((ω1ω2)t+ϕ)\begin{align} I_\mathrm{total} &= |E_1|^2 + |E_2|^2 + 2 |E_1| |E_2| \cos((\omega_1 - \omega_2) t + \phi) \end{align}

Beatnotes are crucial tools in the world of interferometry.
Typically, we can use one frequency ω1\omega_1 as a static reference, also known as a local oscillator.
Then, we can use the second frequency ω2\omega_2 as a signal field which acts as a probe, bouncing off some optical element of interest, allowing it to accrue some phase, then combining it back with the local oscillator.
This is known as heterodyne interferometry, and is how your radio works.