In this seminar, we explore fundamental concepts from Lecture 1: ray tracing through optical systems, interference phenomena, and the boundary behavior of light at interfaces. You will solve problems combining analytical calculations with numerical simulations.
Pen & Paper Problems
Problem 1: ABCD Matrix Ray Tracing
A thick lens can be modeled as two refracting surfaces separated by a distance \(d\) in a medium of refractive index \(n\). The ABCD matrix for this system is:
\[\begin{pmatrix} A & B \\ C & D \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ -\frac{1}{f} & 1 \end{pmatrix}\]
for a thin lens, but for a thick lens with radii \(R_1\) and \(R_2\) (first surface convex toward incident light) and refractive index \(n\):
Given: \(R_1 = 50\) mm, \(R_2 = -50\) mm, \(d = 5\) mm, \(n = 1.5\), incident ray at height \(h = 2\) mm with angle \(\theta = 1°\).
Tasks: 1. Compute the focal length of the thick lens using \(f = \frac{d}{n-1} \left( \frac{1}{R_1} - \frac{1}{R_2} + \frac{(n-1)d}{nR_1 R_2} \right)\). 2. Trace the ray through the system using ABCD matrices (compute the matrices for: first refraction, propagation, second refraction). 3. Find the output ray position and angle. If this ray continues, where does it cross the optical axis (image position)?
Hint: A ray state is \(\begin{pmatrix} h \\ \theta \end{pmatrix}\). After propagating through ABCD: \(\begin{pmatrix} h' \\ \theta' \end{pmatrix} = \begin{pmatrix} A & B \\ C & D \end{pmatrix} \begin{pmatrix} h \\ \theta \end{pmatrix}\).
Problem 2: Thin Film Interference
A soap film (refractive index \(n = 1.33\), thickness \(d = 0.5\) μm) floats in air. White light is incident normally on the film.
Tasks: 1. For constructive interference in reflected light, what wavelengths (in the visible range 400–700 nm) are enhanced? 2. For destructive interference in reflected light, what colors are suppressed? 3. The reflected color appears as a particular shade. Which wavelengths contribute most?
Hint: For a film in air with normal incidence, the optical path difference is \(2nd\) (accounting for the phase change at the air-film boundary). Include the \(\pi\) phase shift at the denser medium reflection.
Problem 3: Michelson Interferometer
A Michelson interferometer uses a He-Ne laser (\(\lambda = 633\) nm). The path difference between the two arms is adjustable.
Tasks: 1. If the movable mirror is displaced by \(\Delta z = 0.1\) mm, how many fringes pass through the center of the field of view? 2. If one mirror is tilted by angle \(\alpha = 10\) arcseconds relative to the other, estimate the fringe spacing (center-to-center distance on the detector). Assume the beam diameter on the mirror is 10 mm. 3. What happens to the visibility (contrast) of the fringes if the mirrors are tilted?
Problem 4: Fresnel Equations & Brewster Angle
Consider light incident on a glass-air interface (from glass, \(n_1 = 1.5\), to air, \(n_2 = 1.0\)).
Tasks: 1. Calculate the Brewster angle \(\theta_B = \arctan(n_2/n_1)\) for this interface. 2. At Brewster incidence, what is the reflection coefficient for \(s\)-polarized light (\(R_s\))? 3. Sketch how \(R_s\) and \(R_p\) (Fresnel coefficients for \(s\) and \(p\) polarization) vary with incident angle from 0° to 90°. Mark the Brewster angle.
Python Exercises
Setup
Exercise 1: Thin Film Reflectance
Calculate and plot the reflectance spectrum for a thin film of varying thickness.
Code
# Thin film interference: reflectance vs wavelengthdef thin_film_reflectance(n_film, n_air, thickness_um, wavelengths_nm):""" Calculate reflectance for normal incidence on a thin film. Assumes film in air with phase change at first surface. """ n = n_film d = thickness_um *1000# nm# Optical path difference delta =2* n * d # (in nm)# Phase difference (accounting for π phase change at denser medium) phase =2* np.pi * delta / wavelengths_nm + np.pi# Reflectance for normal incidence (Fresnel at interfaces) r1 = (1- n) / (1+ n) # air-film r2 = (n -1) / (n +1) # film-air (same magnitude, opposite sign)# Intensity reflectance with interference R = np.abs(r1 + r2 * np.exp(1j* phase)) / np.abs(1+ r1 * r2 * np.exp(1j* phase))**2return R# Define wavelengthswavelengths = np.linspace(400, 700, 500)# Calculate reflectance for soap film (n=1.33, d=0.5 µm)R_soap = thin_film_reflectance(n_film=1.33, n_air=1.0, thickness_um=0.5, wavelengths_nm=wavelengths)fig, ax = plt.subplots(figsize=get_size(12, 6))ax.plot(wavelengths, R_soap, linewidth=2)ax.set_xlabel(r'Wavelength (nm)')ax.set_ylabel(r'Reflectance')ax.grid(True, alpha=0.3)ax.set_xlim(400, 700)plt.tight_layout()plt.savefig('img/thin_film_reflectance.png', dpi=150, bbox_inches='tight')plt.close()print(f"Maximum reflectance: {np.max(R_soap):.4f} at λ = {wavelengths[np.argmax(R_soap)]:.1f} nm")print(f"Minimum reflectance: {np.min(R_soap):.4f} at λ = {wavelengths[np.argmin(R_soap)]:.1f} nm")
Maximum reflectance: 0.2722 at λ = 443.3 nm
Minimum reflectance: 0.0012 at λ = 532.3 nm
Simulate transmission through a Fabry-Pérot étalon for different finesse values.
Code
def fabry_perot_transmission(phase, finesse):""" Transmission through a Fabry-Pérot étalon. Parameters: - phase: round-trip phase (in units of pi) - finesse: finesse of the étalon """# Reflectance from finesse: F = π*sqrt(R)/(1-R) R = (finesse * (1- np.sqrt(1-1/finesse**2)) / np.pi)**2# Transmission coefficient (Airy function) denominator =1+4* R / (1- R)**2* np.sin(phase/2)**2 T =1/ denominatorreturn T# Phase range (normalized)phase = np.linspace(0, 4*np.pi, 1000)# Different finesse valuesfinesse_values = [5, 20, 50, 100]fig, ax = plt.subplots(figsize=get_size(12, 7))for F in finesse_values: T = fabry_perot_transmission(phase, F) ax.plot(phase/np.pi, T, label=f'Finesse = {F}', linewidth=2)ax.set_xlabel(r'Round-trip phase ($\times \pi$)')ax.set_ylabel(r'Transmission')ax.legend(fontsize=8, loc='upper right')ax.grid(True, alpha=0.3)ax.set_xlim(0, 4)plt.tight_layout()plt.savefig('img/fabry_perot_transmission.png', dpi=150, bbox_inches='tight')plt.close()print("Fabry-Pérot transmission peaks are separated by phase = 2π")print(f"Peak transmission (ideal): 1.0")
Fabry-Pérot transmission peaks are separated by phase = 2π
Peak transmission (ideal): 1.0
Exercise 4: Fresnel Coefficients
Calculate and plot reflection coefficients for s and p polarized light as a function of incident angle.
Code
def fresnel_coefficients(theta_i, n1, n2):""" Fresnel reflection coefficients for s and p polarization. Parameters: - theta_i: incident angle (in radians) - n1, n2: refractive indices of first and second medium """# Refraction angle sin_theta_t = (n1 / n2) * np.sin(theta_i)# Handle total internal reflection sin_theta_t = np.clip(sin_theta_t, -1, 1) theta_t = np.arcsin(sin_theta_t)# s-polarization (TE): perpendicular to plane of incidence rs = (n1 * np.cos(theta_i) - n2 * np.cos(theta_t)) / (n1 * np.cos(theta_i) + n2 * np.cos(theta_t)) Rs = np.abs(rs)**2# p-polarization (TM): parallel to plane of incidence rp = (n2 * np.cos(theta_i) - n1 * np.cos(theta_t)) / (n2 * np.cos(theta_i) + n1 * np.cos(theta_t)) Rp = np.abs(rp)**2return Rs, Rp# Glass to air: n1 = 1.5, n2 = 1.0n1, n2 =1.5, 1.0theta_i_deg = np.linspace(0, 89.9, 500)theta_i_rad = theta_i_deg * np.pi /180Rs, Rp = fresnel_coefficients(theta_i_rad, n1, n2)# Calculate Brewster angletheta_B = np.arctan(n2 / n1) *180/ np.pifig, ax = plt.subplots(figsize=get_size(12, 7))ax.plot(theta_i_deg, Rs, label='s-polarization', linewidth=2)ax.plot(theta_i_deg, Rp, label='p-polarization', linewidth=2)ax.axvline(theta_B, color='red', linestyle='--', label=f'Brewster angle = {theta_B:.2f}°', linewidth=1.5)ax.fill_between(theta_i_deg, 0, 1, where=(theta_i_deg <= theta_B), alpha=0.1, color='green')ax.set_xlabel(r'Incident angle (°)')ax.set_ylabel(r'Reflectance')ax.legend(fontsize=8)ax.grid(True, alpha=0.3)ax.set_xlim(0, 90)ax.set_ylim(0, 1.05)plt.tight_layout()plt.savefig('img/fresnel_coefficients.png', dpi=150, bbox_inches='tight')plt.close()print(f"Calculated Brewster angle: {theta_B:.3f}°")print(f"Theoretical Brewster angle: {np.arctan(1/1.5)*180/np.pi:.3f}°")print(f"Reflectance for p-polarization at Brewster angle: {Rp[np.argmin(np.abs(theta_i_deg - theta_B))]:.6f}")
Calculated Brewster angle: 33.690°
Theoretical Brewster angle: 33.690°
Reflectance for p-polarization at Brewster angle: 0.000000
Solutions Guide
Problem 1: The focal length should be calculated using the given formula. Use matrix multiplication to trace the ray, and solve for where the output ray crosses the axis.
Problem 2: Look for wavelengths satisfying \(2nd\cos\theta_r = m\lambda\) (constructive) and \(2nd\cos\theta_r = (m + 1/2)\lambda\) (destructive), where \(\theta_r\) is the refracted angle and \(m\) is an integer.
Problem 3: The number of fringes \(N = 2\Delta z / \lambda\). For a tilted mirror, the fringe spacing depends on the tilt angle and beam size.
Problem 4: Use Snell’s law to find refraction angles and apply Fresnel equations. At Brewster angle, \(\theta_i + \theta_t = 90°\), making \(R_p = 0\).
Summary
These exercises cover the essential wave-optical phenomena: ray geometry, interference, and polarization-dependent reflection. By combining analytical and numerical approaches, you develop intuition for how light behaves at interfaces and in optical systems.