midtskogen wrote:That the one-way speed of light (and from now on I will simply say "the speed of light" to mean the one-way speed of light, and say two-way speed of light otherwise) is immeasurable is something I did learn briefly during a special relativity course, which blew my mind as much as Derek's and everyone else's, but along with much else that we learn in relativity it eventually became somewhat comfortable. However, I had never seen nor tried to prove why certain attempts to measure it would fail except for some really simple ones like what Veritasium walked through so elegantly.Your thought experiment of using orbital motion is a great one, because it is very tempting to think that even if satellite motion is actually nonuniform in such a way that one observer sees it as uniform with an anisotropic speed of light, that a different observer would not see it uniform, and so the effect should still be observable.Why doesn't this work?
Source of the post
Centuries ago one could, I suppose, argue that we couldn't know that the orbits actually didn't slow down or speed up and the speed of light varied depending on the direction, but today we can have probes around Jupiter and Saturn observing the moons. Meanwhile on Earth we observe the transits and occultations of the moons accurately and we get reports from the probes that, no, the orbits did not change despite what we observed. Therefore the one way speed of light did not change with direction, only our distance to the planets.
Now, I've never seen this shown, and to be honest I was not certain about it. I simply believed very strongly that it must fail somehow. So when I answered by saying "ah, but what are the laws of motion with an anisotropic speed of light?", I was hinting that it is conceivable that the laws of motion could be different in such a way that the effect is not noticeable. In other words this is not really a measurement
, but rather an argument
that the observed uniformity of orbital motions implies an isotropic one-way speed of light. But unless we prove that there is no alternative self-consistent picture of orbital motion with anisotropic light, or unless we prove that there is at least one which is, then the question of whether this experiment works lies unresolved.
So... let's actually calculate this! I've coded something up to do just that, and the result blew my mind all over again, because while I expected this result, I had trouble really believing
Let's consider a satellite in a circular orbit about the origin. I think it's intuitive that if the speed of light depends on direction, then if the true satellite motion is uniform, an observer at the origin will see it be nonuniform. Of course, we know circular motion does appear uniform from the origin, so it must be the case that the true motion is nonuniform if the speed of light depends on direction. The critical question: what will that motion be, in order for the observer to see it as uniform?
To find out, I calculate it somewhat backwards. Imagine you are sitting at the origin with a laser pointer, and you swivel it around by rotating at a constant angular speed. If the speed of light is isotropic, the laser's intersection with the satellite's orbit will be in uniform circular motion as well. But if the speed of light is anisotropic, then the intersection will move non-uniformly, and in exactly the right way as to match (in reverse) what the motion of the satellite must be so that the satellite appears to be moving uniformly according to the origin.
So by computing the time of intersection of the laser with the orbit, we can find where the satellite must be so that it appears to move uniformly, at least according to the origin. But what will another observer at different arbitrary location see? Surely they can't also see the satellite move uniformly, can they?
In fact, they don't. But neither would they if the speed of light was actually isotropic, and the motion actually uniform. After all, when the satellite is closer to the observer, the light travel time is shorter. And here's the catch. If they assume that the speed of light is isotropic, and compensate for the light travel time from where they see the satellite to be, then they will say the true motion of the satellite is perfectly uniform! Proof (sort of):
We need a function describing the speed of light as a function of direction. We know the most extreme case is that it could move at c/2 one way and infinitely fast in the other. For fun, let's choose that. But for this problem we need to know the speed in all directions in the 2D plane. There are infinitely many functions of direction we could choose that would satisfy c/2 one way and infinity the other way, but in order to be consistent with relativity, we need the two-way
speed of light to be c in all directions. This forces a condition on our function, and its harmonic mean
in opposing directions must be equal to c.
Which function has this property? Thankfully, this work is already done for us by Iyer and Prabhu who derive it for the three dimensional case in this paper
(see equation 39). We can easily adopt to our two dimensional case. The function is:
where in our choice of most extreme anisotropy we will let v/c = 1, which gives a maximum of c' of infinity for light moving in the upward direction (toward θ=pi/2), and a minimum of c'=c/2 for light moving in the downward direction (toward θ=3pi/2). And for a quick consistency check, if we look at the opposing directions pi/4 and 5pi/4, the one-way speeds (in units of c) are 2 - sqrt(2) and 2 + sqrt(2), respectively, and their harmonic mean is 1.
Here's the plot for when the light from the satellite reaches different observers. I set c=1 (we can always choose units where this is true, like 1 light year per year), a circular orbit at 10 light seconds, which appears from the origin to be in uniform motion at a speed of c/2. The yellow curve indicates the perceived motion of the satellite from the origin, while the blue curve
indicates the true motion of the satellite. (All motion here is counterclockwise, in the direction of increasing angle.)
Notice that in order for the origin to see uniform circular motion, the satellite must be moving the fastest (curve is shallowest) at θ=0°. Then we see the greatest delay between true position and perceived position at θ=90°, which is the direction from which light travels the slowest. Makes sense. The satellite then accelerates, reaching its maximum true speed at θ=180°, and then its true position equals its apparent position at θ=270°, which makes sense because that is the direction from which light travels instantly, and the origin sees the satellite "in real time".
So far so good. Next I compute the time for the light to reach another observer located on the orbit in the direction of 180°, and add that to the plot with a thin white line. This represents where that observer sees the satellite.Finally, I compute what this observer would see from a satellite undergoing circular motion with same angular speed that the origin sees, and assuming light moves at c in all directions. That is the thick dashed white curve.
Voilà! The curves are exactly the same. Also what's important here is not that they overlap, but have the exact same shape. (This assertion might be difficult to swallow -- if so, think about the Einstein synchronization convention, or check the last sentence of the abstract of Iyer and Prabhu's paper.) Hence, both the origin and the observer at another location think the satellite is undergoing the same uniform circular motion, even though the satellite is not in uniform motion at all! Nature conspires to make this effect, and hence the one-way speed of light, utterly unobservable. Is this a wacky coincidence of my choices for the orbital radius, speed, or observer location? No. You may feel free to play with the code.
# -*- coding: utf-8 -*-
Created on Sun Nov 1 18:46:20 2020
import numpy as np
from matplotlib import pyplot as plt
pi = np.pi #define pi
c=1 #set the speed of light. Suggest setting c=1
r=10 #set the radius of the circular orbit.
beta = 0.5 #set the velocity of the orbit (in units of c)
v = beta*c #convert to normal units (if c != 1)
period = 2*pi*r/v #calculate the orbital period
freq = 1/period #calculate the orbital frequency
w=2*pi*freq #calculate the angular frequency
In this first code block we will calculate the true (nonuniform) motion of the satellite such that
an observer at the origin will see it undergo apparently uniform circular motion. We will do this backwards.
Imagine the origin is a laser rotating opposite the direction the satellite is orbiting, in uniform motion.
What we will do is use the nonisotropic speed of light and calculate when this laser will intersect
the satellite orbit at a particular angle. That time then will correspond to when the satellite should
be at that position, such that its motion appears uniform at the origin.
theta = np.arange(0, 2*pi, .001) #create a list of angles from 0 to 2pi
t_emit = (theta - 2*pi)/w #calculate the time at which the origin emits light in the direction theta
#Define the expression for the one-way speed of light. To be consistent with relativity, the formula must
#have a harmonic mean of c. That is, the two-way speed of light in all directions must be c.
c_theta = c/(1+np.sin(theta))
tau_theta = r/c_theta #calculate the travel time for the light to reach the orbit from the origin
t_arrive = t_emit - tau_theta #calculate the arrival time of the light at the orbit.
offset = t_arrive #the computed times will start out negative, so let's apply an offset so time starts at 0
t_arrive = t_arrive - offset
t_emit = t_emit - offset
In this next block, we will place an observer at coordinates (x_obs, y_obs), and calculate what they will see
the satellite's motion to be (using its actual non-uniform motion calculated above and the anisotropic one-way
speed of light), and then compare it with what they expect if the true motion was uniform and there was no anisotropy.
x_obs = -r #x component of observer
y_obs = 0 #y component of observer
dx = x_obs - r*np.cos(theta) #x component of sat-obs distance
dy = y_obs - r*np.sin(theta) #y component of sat-obs distance
a = np.sqrt(dx**2 + dy**2) #distance from satellite to observer
theta_obs =  #calculate the angle from satellite to observer
for i in range(0,len(dx)):
for i in range(0,len(theta_obs)): #apply a shift so that negative angles are positive (from 0 to 2pi)
if theta_obs[i] < 0:
theta_obs[i] = theta_obs[i] + 2*pi
theta_obs = np.array(theta_obs) #convert list to array
c_theta_obs = c/(1+np.sin(theta_obs)) #calculate the speed of light from satellite to observer
tau_obs = a/c_theta_obs #calculate the light-travel time from satellite to observer
t_obs = t_arrive + tau_obs #calculate the time at which the light reaches the observer
Finally we will calculate what the observer *would* see if the satellite was actually undergoing the same uniform
circular motion that an observer at the origin sees, and assuming an isotropic one-way speed of light. What we want
to check is whether these match or not. If they match, then it means the one-way speed of light is not measurable by
watching orbital motion, because orbital motion will be nonuniform in exactly the right way to cancel the light-travel
time effects for all observers!
tau_c_obs = a/c #calculate the sat-obs travel time as if lightspeed is isotropic
t_c_obs = theta/w + tau_c_obs #calculate the arrival time of the light as if the satellite was in uniform motion
#This plots the one-way speed of light vs. the direction it is moving."
fig0, ax = plt.subplots(1,1)
ax.plot(theta*180/pi, c_theta, '-k', linewidth=2)
fig0.suptitle('A Nonisotropic Speed of Light: one-way speed vs. direction', size=10)
ax.set_xlabel('direction of light ray propagation [degrees]')
ax.set_ylabel("speed of light [in units of c]")
#This plots the arrival time of the light from the satellite for each observer.
fig1, ax = plt.subplots(1,1)
ax.plot(theta*180/pi, t_arrive, '-r', linewidth=1, label='true motion of satellite')
ax.plot(theta*180/pi, t_emit, '-b', linewidth=1, label='where origin sees satellite')
ax.plot(theta*180/pi, t_obs, '-k', linewidth=1, label='where observer sees satellite')
ax.plot(theta*180/pi, t_c_obs, '--k', linewidth=2, label="expectation assuming isotropy")
fig1.suptitle('An Anisotropic One-way Speed of Light: \n Satellite in nonuniform circular orbit at r=10, such that \n origin sees uniform speed c/2, and observer is located at (x,y) = (-r,0)', size=10)
ax.set_xlabel('angular position of satellite [degrees]')
ax.set_ylabel("time in book-keeper's frame [r/c]")