Theory of Relativity
Prerequisites & Foundations
Math, classical mechanics & electromagnetism basicsCrisis of Classical Physics
Why relativity was neededSpecial Relativity
Physics at high speedsSpacetime & Geometry
Minkowski spacetime and diagramsGeneral Relativity
Gravity as curved spacetimeCosmology
Relativity at universe scaleExperimental Verification
Evidence and real-world testsMathematical Relativity
Tensors and differential geometryAdvanced Topics & Frontiers
Quantum gravity, wormholes & beyondApplications of Relativity
GPS, astrophysics & technologyEinstein's Two Postulates
In June 1905, Albert Einstein published "On the Electrodynamics of Moving Bodies" — a paper that would redefine our understanding of space and time. Its foundation rests on just two postulates, both seemingly innocuous, yet together producing revolutionary consequences.
First Postulate: The Principle of Relativity
This means there's no "absolute rest" — a physics experiment performed on a smoothly moving train gives identical results to one on the ground. You cannot determine your absolute velocity through space — only your velocity relative to other objects.
Second Postulate: Constancy of the Speed of Light
This is the radical departure from Newton. Whether you run toward a light beam or away from it, you measure exactly the same speed c. This seems impossible if you're thinking in Newtonian terms — but it's experimentally verified to extraordinary precision.
flowchart TD
A["Postulate 1:
Laws same in all
inertial frames"] --> D["Relativity of
Simultaneity"]
B["Postulate 2:
Speed of light
is constant"] --> D
D --> E["Time Dilation"]
D --> F["Length Contraction"]
E --> G["Lorentz
Transformations"]
F --> G
G --> H["Relativistic
Momentum"]
G --> I["Mass-Energy
Equivalence"]
H --> J["Nothing exceeds c"]
I --> K["E = mc²"]
Relativity of Simultaneity
The first shocking consequence: events that are simultaneous in one frame may not be simultaneous in another. This is not an illusion or measurement error — it's a fundamental property of spacetime.
Einstein's Train
A train moves at high speed. Lightning strikes both ends simultaneously (as seen by a trackside observer). A passenger in the middle of the train sees the front flash before the rear flash — because they're moving toward the front light and away from the rear light, and both flashes travel at c regardless of the train's motion.
Both observers are correct! Simultaneity is relative — it depends on your reference frame.
Time Dilation
Moving clocks run slower. This isn't a mechanical effect — time itself passes more slowly for a moving observer. This is one of relativity's most startling and experimentally verified predictions.
The Light Clock Derivation
Consider a "light clock" — a photon bouncing vertically between two mirrors separated by distance d. For the stationary clock, one tick takes:
Now observe this clock from a frame where it moves horizontally at speed v. The photon travels a diagonal path (longer distance), but still at speed c. By the Pythagorean theorem:
The Time Dilation Formula
Solving for \Delta t:
Since \gamma > 1 for any v > 0, the moving clock always takes longer per tick — it runs slow. The proper time \Delta t_0 (measured by the clock at rest) is always the shortest.
At v=0, the photon bounces straight up and down. Increase velocity to see the photon's diagonal path (longer!) — demonstrating why moving clocks tick slower.
import numpy as np
import matplotlib.pyplot as plt
# Time dilation visualization
c = 1 # natural units
speeds = np.linspace(0, 0.99, 500)
gamma = 1 / np.sqrt(1 - speeds**2)
# For 1 year of proper time, how much time passes for stationary observer?
proper_time = 1 # year
dilated_time = gamma * proper_time
# Print key values
print("Time Dilation: 1 year of proper time")
print("=" * 45)
print(f"{'Speed (v/c)':<12} {'γ':<10} {'Stationary time':<18}")
print("-" * 45)
for v in [0.1, 0.5, 0.8, 0.9, 0.95, 0.99, 0.999]:
g = 1 / np.sqrt(1 - v**2)
print(f"{v:<12.3f} {g:<10.4f} {g*proper_time:<18.4f} years")
Length Contraction
Objects are shorter in the direction of motion — as measured by an observer they pass. The contracted length is:
where L_0 is the proper length (measured in the object's rest frame). Since \gamma > 1, the measured length L is always less than L_0.
import numpy as np
# Length contraction examples
c = 3e8 # m/s
L0 = 100 # proper length in meters (e.g., a spacecraft)
print("Length Contraction of a 100-meter spacecraft")
print("=" * 50)
print(f"{'Speed (v/c)':<12} {'γ':<10} {'Observed Length (m)':<20} {'% Contracted':<12}")
print("-" * 50)
for beta in [0.1, 0.3, 0.5, 0.7, 0.8, 0.9, 0.95, 0.99]:
gamma = 1 / np.sqrt(1 - beta**2)
L = L0 / gamma
contraction = (1 - L/L0) * 100
print(f"{beta:<12.2f} {gamma:<10.4f} {L:<20.2f} {contraction:<12.1f}%")
# Muon example
print("\n\nReal Example: Cosmic Ray Muons")
print("=" * 50)
muon_lifetime = 2.2e-6 # seconds (proper time)
v_muon = 0.998 * c # typical cosmic ray muon speed
gamma_muon = 1 / np.sqrt(1 - (0.998)**2)
# Classical prediction: distance muon can travel
d_classical = v_muon * muon_lifetime
# Relativistic prediction: dilated lifetime
d_relativistic = v_muon * (gamma_muon * muon_lifetime)
print(f"Muon proper lifetime: {muon_lifetime*1e6:.1f} μs")
print(f"Muon speed: 0.998c")
print(f"Lorentz factor: γ = {gamma_muon:.1f}")
print(f"Classical travel distance: {d_classical:.0f} m = {d_classical/1000:.2f} km")
print(f"Relativistic travel distance: {d_relativistic:.0f} m = {d_relativistic/1000:.1f} km")
print(f"Muons created at ~15 km altitude DO reach Earth's surface!")
Lorentz Transformations
The Lorentz transformations replace the Galilean transformations, correctly relating coordinates between two inertial frames in relative motion at velocity v along the x-axis:
The inverse transformations (solving for unprimed from primed) simply replace v with -v:
Mass-Energy Equivalence: E = mc²
The most famous equation in physics states that mass and energy are interchangeable:
This is the rest energy — the energy contained in an object simply by virtue of having mass. Since c^2 \approx 9 \times 10^{16} m²/s², even a tiny amount of mass contains enormous energy.
import numpy as np
# E = mc² calculations — energy content of everyday objects
c = 3e8 # m/s
c_squared = c**2
print("E = mc² — Energy Content of Everyday Objects")
print("=" * 55)
print(f"c² = {c_squared:.2e} m²/s² = {c_squared:.2e} J/kg")
print()
objects = [
("Grain of sand", 0.001e-3), # 1 mg
("Penny (US)", 2.5e-3), # 2.5 g
("Apple", 0.2), # 200 g
("Human (70 kg)", 70),
("Car (1500 kg)", 1500),
]
for name, mass in objects:
energy_joules = mass * c_squared
energy_kilotons = energy_joules / 4.184e12 # 1 kiloton TNT = 4.184e12 J
print(f"{name:<20} mass={mass:.3e} kg → E = {energy_joules:.2e} J ({energy_kilotons:.1f} kilotons TNT)")
print(f"\nComparison: Hiroshima bomb ≈ 15 kilotons TNT")
print(f"A single kilogram fully converted = {1*c_squared/4.184e12:.0f} kilotons = {1*c_squared/4.184e15:.1f} megatons")
Relativistic Momentum & Energy
The total energy of a particle includes both rest energy and kinetic energy:
The relativistic momentum is:
These combine into the energy-momentum relation:
For massless particles (photons): E = pc. For particles at rest: E = mc^2.
The Twin Paradox
Perhaps the most famous "paradox" in relativity: one twin stays on Earth while the other makes a high-speed round trip to a distant star. When the traveler returns, they've aged less than the stay-at-home twin.
The Twin Paradox
Setup: Twin A stays on Earth. Twin B travels to Alpha Centauri (4.37 light-years away) at 0.9c and returns.
Earth time: Round trip = 2 × 4.37/0.9 = 9.71 years
Traveler's time: 9.71/γ = 9.71/2.294 = 4.23 years
Result: Twin B is 5.48 years younger than Twin A upon return!
Resolution: This isn't a true paradox. The situation is NOT symmetric — Twin B accelerates (turns around), breaking the symmetry. The twin who changes direction experiences less time.
import numpy as np
# Twin Paradox calculation
c = 1 # natural units (c = 1 light-year/year)
distance = 4.37 # light-years to Alpha Centauri
v = 0.9 # speed as fraction of c
# Earth frame calculations
travel_time_one_way = distance / v # years
total_earth_time = 2 * travel_time_one_way
# Traveler frame calculations
gamma = 1 / np.sqrt(1 - v**2)
total_traveler_time = total_earth_time / gamma
# Age difference
age_difference = total_earth_time - total_traveler_time
print("Twin Paradox: Trip to Alpha Centauri at 0.9c")
print("=" * 50)
print(f"Distance: {distance} light-years")
print(f"Speed: {v}c")
print(f"Lorentz factor γ: {gamma:.4f}")
print(f"\nEarth twin (stays home):")
print(f" Time elapsed: {total_earth_time:.2f} years")
print(f"\nTraveling twin:")
print(f" Time elapsed: {total_traveler_time:.2f} years")
print(f"\nAge difference: {age_difference:.2f} years")
print(f"The traveler is {age_difference:.2f} years YOUNGER!")
# Multiple speeds comparison
print(f"\n{'Speed':<8} {'Earth Time':<13} {'Traveler Time':<15} {'Age Gap':<10}")
print("-" * 46)
for v in [0.5, 0.7, 0.9, 0.95, 0.99, 0.999]:
t_earth = 2 * distance / v
g = 1 / np.sqrt(1 - v**2)
t_traveler = t_earth / g
gap = t_earth - t_traveler
print(f"{v:<8.3f} {t_earth:<13.2f} {t_traveler:<15.2f} {gap:<10.2f} years")
Practice Exercises
Exercises: Special Relativity
1. A muon has a proper lifetime of 2.2 μs. If it travels at 0.995c, what is its observed lifetime in the lab frame? How far can it travel?
2. A spaceship is 200 meters long in its rest frame. An observer sees it pass at 0.8c. What length does the observer measure?
3. Using the Lorentz transformation, find the spacetime coordinates of an event at (x=100m, t=0) as seen from a frame moving at 0.6c.
4. Calculate the rest energy (in Joules) of a proton (mass = 1.67 × 10⁻²⁷ kg). Convert to MeV.
5. Two spaceships approach each other, each moving at 0.7c relative to Earth. What is their speed relative to each other?
Conclusion & Next Steps
Special relativity emerges from two simple postulates and reshapes our understanding of reality:
- Time dilation: moving clocks run slow by factor \gamma
- Length contraction: moving objects are shorter by factor 1/\gamma
- Simultaneity is relative: events can be simultaneous in one frame but not another
- Mass-energy equivalence: E = mc^2 — mass IS energy
- Speed limit: nothing with mass can reach or exceed c
But special relativity only handles inertial (non-accelerating) frames. To properly unify these effects into a geometric framework, we need Minkowski spacetime.
Next in the Series
In Part 4: Spacetime & Geometry, we'll discover how Minkowski unified space and time into a single 4-dimensional manifold, learn to read spacetime diagrams, and understand why the spacetime interval is the fundamental invariant of relativity.