7.3 Tidal Forces
Tides are caused by the differential gravitational pull of the Moon and Sun across Earth. This creates bulges in the ocean that rotate with Earth, producing the familiar rise and fall of sea level.
Tidal Forces
\( F_{tidal} \propto \frac{M}{r^3} \)
Tidal force depends on mass and CUBE of distance (not square)
Moon's Effect
~2.2Ć Sun's effect despite smaller mass. Closer distance wins.
Sun's Effect
~46% of Moon's. Still significant. Causes spring/neap cycle.
Two Bulges
Why two high tides per day? Two bulges exist:
Near-Side Bulge
Gravitational pull stronger than average ā water pulled toward Moon
Far-Side Bulge
Earth pulled more than far-side water ā water "left behind" (inertia)
Spring and Neap Tides
Spring Tides
Sun + Moon aligned (new/full moon). Maximum range. ~2Ć neap.
Neap Tides
Sun + Moon at 90° (quarter moons). Minimum range. Forces partially cancel.
Spring/neap cycle: ~14 days (half lunar month)
Equilibrium Tide
\( \zeta = \frac{3}{4} \frac{M_m}{M_E} \frac{R^4}{r^3} (3\cos^2\theta - 1) \)
Theoretical tide height (Īø = angle from Moon direction)
Equilibrium tide predicts ~0.5m range. Real tides vary from cm to 16m (Bay of Fundy) due to resonance and geography.
Python: Tidal Forces
#!/usr/bin/env python3
"""tidal_forces.py - Tidal force calculations"""
import numpy as np
import matplotlib.pyplot as plt
# Constants
G = 6.674e-11
M_moon = 7.342e22 # kg
M_sun = 1.989e30
M_earth = 5.972e24
R_earth = 6.371e6 # m
r_moon = 3.844e8 # m
r_sun = 1.496e11 # m
def tidal_acceleration(M, r, R):
"""
Tidal acceleration at Earth's surface
M: mass of perturbing body
r: distance to perturbing body
R: Earth's radius
"""
return 2 * G * M * R / r**3
# Calculate tidal accelerations
a_moon = tidal_acceleration(M_moon, r_moon, R_earth)
a_sun = tidal_acceleration(M_sun, r_sun, R_earth)
print(f"Moon tidal acceleration: {a_moon:.2e} m/s²")
print(f"Sun tidal acceleration: {a_sun:.2e} m/s²")
print(f"Moon/Sun ratio: {a_moon/a_sun:.2f}")
# Equilibrium tide height
def equilibrium_tide(theta, M, r, R):
"""Equilibrium tide height at angle theta from perturbing body"""
zeta = (3/4) * (M / M_earth) * (R**4 / r**3) * (3*np.cos(theta)**2 - 1)
return zeta
theta = np.linspace(0, 2*np.pi, 100)
zeta_moon = equilibrium_tide(theta, M_moon, r_moon, R_earth)
zeta_sun = equilibrium_tide(theta, M_sun, r_sun, R_earth)
plt.figure(figsize=(10, 6))
plt.polar(theta, zeta_moon + 0.3, 'b-', lw=2, label='Moon')
plt.polar(theta, zeta_sun + 0.3, 'y--', lw=2, label='Sun')
plt.title('Equilibrium Tidal Bulge')
plt.legend()