Special relativity · Electrodynamics §8

Moving mirror reflection, Doppler shift, and radiation pressure energy balance.

How do the frequency, angle, amplitude, and radiation pressure of light transform when reflected by a moving mirror, and how does energy balance between the light and the mirror's mechanical work?

Moving mirror reflection and radiation pressure

Moving mirror reflection and radiation pressure

Static worked example

Model note
  • Frequency ratio ν′′′/ν (frequencyRatio), Reflection cosine cos(φ′′′) (cosPhiReflected), Reflection angle φ′′′ (degrees) (phiReflectedDeg), Amplitude ratio A′′′/A (amplitudeRatio), Radiation pressure on the mirror (radiationPressure), Radiation force (radiationForce), Incident radiant power (incidentPower), Reflected power (reflectedPower), Work done on the mirror each second (workRate) and Energy balance residual (energyBalanceResidual): Host calculation, by the site's own reference code. Computed in waves.
  • Computed from the settings last applied (settings revision 1, result 1).
  • Not modeled: mirror mass and acceleration (infinite mass limit); finite mirror thickness and internal absorption; diffraction at mirror edges; quantum radiation pressure fluctuations; non-monochromatic wave packets.

Predict before the numbers

The mirror recedes at 0.6c and light hits it head-on. What fraction of the incident frequency returns?

Three relations the model could have

The result appears when you choose, say you have one in mind, or skip.

Try
Experiment settings incident energy density, mirror area

Worked example: light meeting a mirror that moves at 0.6c, 0° from the normal, leaves at 180° with 0.25 of its frequency; of 1.2 × 10⁸ W arriving, 3 × 10⁷ W is reflected and 8.99 × 10⁷ W does work on the mirror.

Moving mirror with incident and reflected lightnormalv = +0.60c, recedingFincidentreflected

Energy per second

At the mirror, in the laboratory frame (K)

In1.1992 × 108 W
Out1.1992 × 108 W
  • incident light
  • reflected light, at a lower frequency
  • work the light does pushing the mirror (P·v·Am)
  • F, the radiation force on the mirror

Values at these settings

Relativistic wave reflection quantities and energy conservation ledger across frames.
Frequency ratio ν′′′/ν0.25
Reflection cosine cos(φ′′′)−1
Reflection angle φ′′′180 °
Amplitude ratio A′′′/A0.25
Radiation pressure P0.5 Pa
Radiation force F0.5 N
Incident power1.1992 × 108 W
Reflected power2.9979 × 107 W
Work done on the mirror, P·v·Am8.9938 × 107 W
Energy balance residual0 W

At normal incidence with a receding mirror (β = 0.6), the incident power is 0.4 IAm, the reflected power 0.1 IAm, and the mirror receives mechanical work at the rate 0.3 IAm. Energy is conserved exactly, with zero residual.

Light bouncing off a mirror that moves away comes back redder and weaker, and pushes the mirror less hard than it pushes a mirror at rest. The energy the light loses is exactly the work it does in pushing the mirror along.

The second half of §8 lets the plane waves of §7 fall on a perfectly reflecting mirror that moves with the system k. Einstein transforms the incident light into k, where the mirror is at rest and reflection is ordinary, and transforms the reflected light back to K. For normal incidence on a mirror receding at 0.6c, the reflected light has a quarter of the incident frequency and a quarter of the amplitude, so a sixteenth of the energy per unit volume. The energy principle then gives the pressure: the energy arriving at the mirror each second, less the energy leaving it, is the work the light does in pushing the mirror, P·v, and §8 finds P = 2(A²/8π)(cos φ − v/V)²/(1 − (v/V)²). With 1 J/m³ of light that is 0.5 Pa, against 2 Pa on a mirror at rest; to first order in v/V it is 2(A²/8π) cos² φ, which Einstein notes agrees with experience and with other theories. On a 1 m² mirror, 1.199 × 108 W arrives, 2.998 × 107 W leaves, and the other 8.994 × 107 W is the work done on the mirror, so the ledger balances. Drive the mirror toward the light at 0.6c and everything reverses: four times the frequency, 8 Pa, and the mirror does work on the light. At 30° the reflected ray still leans slightly forward, cos φ′′′ = +0.069, yet it moves along the mirror's direction at only 0.069c while the mirror moves at 0.6c, so the two separate. At oblique incidence the light's speed toward the mirror is c cos φ; at 60° and 0.6c that is 0.5c, less than the mirror's speed, so the light never catches it, and the lab says so instead of computing. In the mirror's own frame no work is done, and the reflected power equals the incident power.

Modern qualifications

§8 writes the energy per unit volume as A²/8π and the speed of light as V, and marks the reflected quantities with triple primes, A′′′, φ′′′ and ν′′′. Its first-order result, 2(A²/8π) cos² φ, is the pressure Maxwell's theory gave for a mirror at rest, which Bartoli had also argued for from thermodynamics; Lebedev, and independently Nichols and Hull, measured light pressure in 1901. The exact formula for a moving mirror, and the energy bookkeeping that yields it, are what §8 adds. Its closing claim, that the optics of moving bodies reduces to the optics of bodies at rest by a change of frame, states the program of the whole paper.

Show the code

The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.

evaluateSr11 · src/physics/reference/waves.ts · this site’s source, as built · sha256:1e4cadb9104f65489aad06ebe337527cec8d5de1ebd7919441142cbee73f8bcc

This function computes the listed outputs when it runs.

In words

The laboratory's evaluator for § 8's moving mirror. It takes the mirror's speed, the angle of incidence, the incident energy density and the mirror's area, and returns the frequency ratio, the cosine and degrees of the reflected angle, the amplitude ratio, the radiation pressure and force, the incident and reflected powers, the rate at which the light does work on the mirror, and the residual by which the energy account fails to balance. In the mirror's own rest frame it reports no work and equal powers, which is the check that the two descriptions agree.

Implementation

export function evaluateSr11(input: Sr11Input): Sr11EvaluationResult {
  const beta = input.beta;
  const phiDeg = input.incidentAngleDeg;
  const phiRad = (phiDeg * Math.PI) / 180;
  const u = input.incidentEnergyDensity ?? 1.0;
  const Am = input.mirrorArea ?? 1.0;
  const frame = input.frame ?? "lab";
  const unitLayer = input.unitLayer ?? "si";
  const c = C_SI; // the powers are published in W, so c is in m/s, not 1

  if (!Number.isFinite(beta) || Math.abs(beta) >= 1) {
    const reason = "Mirror speed beta must be in (-1, 1).";
    const outside = (quantityId: string, unit: string, semanticKind: string): ScientificResult =>
      Object.freeze({
        quantityId,
        unit,
        semanticKind,
        ownerId: OWNER_ID,
        status: "outside-domain" as const,
        condition: "superluminal-speed",
        domainKind: "physical" as const,
        reason,
        boundary: { parameterId: "beta", value: 0.95 },
      });

    return Object.freeze({
      beta,
      incidentAngleDeg: phiDeg,
      incidentAngleRad: phiRad,
      incidentEnergyDensity: u,
      mirrorArea: Am,
      frame,
      unitLayer,
      frequencyRatio: Number.NaN,
      cosPhiReflected: Number.NaN,
      phiReflectedRad: Number.NaN,
      phiReflectedDeg: Number.NaN,
      amplitudeRatio: Number.NaN,
      radiationPressure: Number.NaN,
      radiationForce: Number.NaN,
      incidentPower: Number.NaN,
      reflectedPower: Number.NaN,
      workRate: Number.NaN,
      energyBalanceResidual: Number.NaN,
      explanation: reason,
      results: [
        outside("frequencyRatio", "1", "ratio"),
        outside("cosPhiReflected", "1", "cosine"),
        outside("phiReflectedDeg", "deg", "angle"),
        outside("amplitudeRatio", "1", "ratio"),
        outside("radiationPressure", "Pa", "pressure"),
        outside("radiationForce", "N", "force"),
        outside("incidentPower", "W", "power"),
        outside("reflectedPower", "W", "power"),
        outside("workRate", "W", "power"),
        outside("energyBalanceResidual", "W", "power"),
      ],
      status: "outside-domain" as const,
      reason,
    });
  }

  const mmRes = movingMirror(beta, phiRad, { u, c, Am });

  if (mmRes.status !== "value") {
    const reason = mmRes.reason;
    const makeStatusResult = (
      quantityId: string,
      unit: string,
      semanticKind: string,
    ): ScientificResult => {
      if (mmRes.status === "outside-domain") {
        return Object.freeze({
          quantityId,
          unit,
          semanticKind,
          ownerId: OWNER_ID,
          status: "outside-domain" as const,
          condition: mmRes.condition,
          domainKind: mmRes.domainKind,
          reason,
          boundary: { parameterId: "beta", value: 0.95 },
        });
      }
      return Object.freeze({
        quantityId,
        unit,
        semanticKind,
        ownerId: OWNER_ID,
        status: "not-applicable" as const,
        reason,
      });
    };

    return Object.freeze({
      beta,
      incidentAngleDeg: phiDeg,
      incidentAngleRad: phiRad,
      incidentEnergyDensity: u,
      mirrorArea: Am,
      frame,
      unitLayer,
      frequencyRatio: Number.NaN,
      cosPhiReflected: Number.NaN,
      phiReflectedRad: Number.NaN,
      phiReflectedDeg: Number.NaN,
      amplitudeRatio: Number.NaN,
      radiationPressure: Number.NaN,
      radiationForce: Number.NaN,
      incidentPower: Number.NaN,
      reflectedPower: Number.NaN,
      workRate: Number.NaN,
      energyBalanceResidual: Number.NaN,
      explanation: reason,
      results: [
        makeStatusResult("frequencyRatio", "1", "ratio"),
        makeStatusResult("cosPhiReflected", "1", "cosine"),
        makeStatusResult("phiReflectedDeg", "deg", "angle"),
        makeStatusResult("amplitudeRatio", "1", "ratio"),
        makeStatusResult("radiationPressure", "Pa", "pressure"),
        makeStatusResult("radiationForce", "N", "force"),
        makeStatusResult("incidentPower", "W", "power"),
        makeStatusResult("reflectedPower", "W", "power"),
        makeStatusResult("workRate", "W", "power"),
        makeStatusResult("energyBalanceResidual", "W", "power"),
      ],
      status: mmRes.status,
      reason,
    });
  }

  let frequencyRatio: number;
  let cosPhiReflected: number;
  let phiReflectedRad: number;
  let amplitudeRatio: number;
  let radiationPressure: number;
  let radiationForce: number;
  let incidentPower: number;
  let reflectedPower: number;
  let workRate: number;
  let energyBalanceResidual: number;
  let explanation: string;

  if (frame === "mirror") {
    const ledger = mirrorFrameLedger(beta, phiRad, { I: u * c, Am, c }); // I is intensity, u·c
    frequencyRatio = ledger.frequencyFactor;
    cosPhiReflected = ledger.cosPhiPrime;
    phiReflectedRad = ledger.phiPrimeRad;
    amplitudeRatio = ledger.frequencyFactor;
    radiationPressure = ledger.forcePrime / Am;
    radiationForce = ledger.forcePrime;
    incidentPower = ledger.incidentPower;
    reflectedPower = ledger.reflectedPower;
    workRate = 0;
    energyBalanceResidual = 0;
    explanation =
      "In the mirror rest frame, reflection does no mechanical work and incident power equals reflected power.";
  } else {
    frequencyRatio = mmRes.frequencyRatio;
    cosPhiReflected = mmRes.cosPhiReflected;
    phiReflectedRad = mmRes.phiReflectedRad;
    amplitudeRatio = mmRes.amplitudeRatio;
    radiationPressure = mmRes.radiationPressure;
    radiationForce = mmRes.radiationForce;
    incidentPower = mmRes.incidentPower;
    reflectedPower = mmRes.reflectedPower;
    workRate = mmRes.workRate;
    energyBalanceResidual = mmRes.energyBalanceResidual;
    explanation = mmRes.explanation ?? "";
  }

  const phiReflectedDeg = (phiReflectedRad * 180) / Math.PI;

  const val = (
    quantityId: string,
    unit: string,
    semanticKind: string,
    v: number,
  ): ScientificResult =>
    Object.freeze({
      quantityId,
      unit,
      semanticKind,
      ownerId: OWNER_ID,
      status: "value" as const,
      value: v,
    });

  const results: ScientificResult[] = [
    val("frequencyRatio", "1", "ratio", frequencyRatio),
    val("cosPhiReflected", "1", "cosine", cosPhiReflected),
    val("phiReflectedDeg", "deg", "angle", phiReflectedDeg),
    val("amplitudeRatio", "1", "ratio", amplitudeRatio),
    val("radiationPressure", "Pa", "pressure", radiationPressure),
    val("radiationForce", "N", "force", radiationForce),
    val("incidentPower", "W", "power", incidentPower),
    val("reflectedPower", "W", "power", reflectedPower),
    val("workRate", "W", "power", workRate),
    val("energyBalanceResidual", "W", "power", energyBalanceResidual),
  ];

  return Object.freeze({
    beta,
    incidentAngleDeg: phiDeg,
    incidentAngleRad: phiRad,
    incidentEnergyDensity: u,
    mirrorArea: Am,
    frame,
    unitLayer,
    frequencyRatio,
    cosPhiReflected,
    phiReflectedRad,
    phiReflectedDeg,
    amplitudeRatio,
    radiationPressure,
    radiationForce,
    incidentPower,
    reflectedPower,
    workRate,
    energyBalanceResidual,
    explanation,
    results,
    status: "value" as const,
  });
}

Not modeled: mirror mass and acceleration (infinite mass limit); finite mirror thickness and internal absorption; diffraction at mirror edges; quantum radiation pressure fluctuations; non-monochromatic wave packets.

Worked case (readable without JavaScript)

Consider monochromatic radiation of energy density u encountering a perfectly reflecting mirror of area Am moving at velocity v = 0.6c (β = 0.6, γ = 1.25) along the surface normal (φ = 0°).

The reflected wave frequency undergoes a double Doppler transformation:

ν′′′ν=1−2βcos⁡φ+β21−β2=1−2(0.6)(1)+0.361−0.36=0.160.64=0.25\begin{aligned}\frac{\nu'''}{\nu} &= \frac{1 - 2\beta\cos\varphi + \beta^2}{1 - \beta^2} \\ &= \frac{1 - 2(0.6)(1) + 0.36}{1 - 0.36} \\ &= \frac{0.16}{0.64} \\ &= 0.25\end{aligned}

The radiation pressure on the mirror is:

P=2u (cos⁡φ−β)21−β2=2u (1−0.6)21−0.36=2u 0.160.64=0.5 u\begin{aligned}P &= 2u\,\frac{(\cos\varphi - \beta)^2}{1 - \beta^2} \\ &= 2u\,\frac{(1 - 0.6)^2}{1 - 0.36} \\ &= 2u\,\frac{0.16}{0.64} \\ &= 0.5\,u\end{aligned}

Energy balance per unit time in the laboratory system K:

Pincident=u c Am(1−β)=0.4 u c Am\begin{aligned}P_{\text{incident}} &= u\,c\,A_{\text{m}}(1 - \beta) \\ &= 0.4\,u\,c\,A_{\text{m}}\end{aligned}
Preflected=u(ν′′′ν)2c Am(1+β)=u(0.0625)c Am(1.6)=0.1 u c Am\begin{aligned}P_{\text{reflected}} &= u\left(\frac{\nu'''}{\nu}\right)^2 c\,A_{\text{m}}(1 + \beta) \\ &= u(0.0625)c\,A_{\text{m}}(1.6) \\ &= 0.1\,u\,c\,A_{\text{m}}\end{aligned}
W˙mechanical=P⋅v⋅Am=(0.5 u)(0.6 c)(Am)=0.3 u c Am\begin{aligned}\dot{W}_{\text{mechanical}} &= P\cdot v\cdot A_{\text{m}} \\ &= (0.5\,u)(0.6\,c)(A_{\text{m}}) \\ &= 0.3\,u\,c\,A_{\text{m}}\end{aligned}
Pincident−Preflected−W˙mechanical=0.4−0.1−0.3=0\begin{aligned}&P_{\text{incident}} - P_{\text{reflected}} - \dot{W}_{\text{mechanical}} \\ &\quad = 0.4 - 0.1 - 0.3 \\ &\quad = 0\end{aligned}

The energy lost by the electromagnetic radiation upon reflection from a receding mirror is converted into mechanical work done on the mirror, preserving exact energy conservation.

Embed this laboratory on another page. It starts from its worked defaults, not your current settings.