一般相対性理論を取り巻く環境
近年時計の精度が$10^{-18}$に達し、実験室環境で一般相対性理論の検証ができるようになってきている。
実際どの程度の時間のズレが生じるのかを計算してみた。
import sympy as sym
sym.init_printing()
Pi = sym.S.Pi # 円周率
c = sym.N(299792458, 50) # 光速
r_Earth = sym.N(6356752.314, 50) # 地球の半径
M_Earth = sym.N(5.9726*(10**24), 50) # 地球の質量
G = sym.N(6.6740831/(10**11), 50) # 万有引力定数
def Schwarzschild(M): # シュワルツシルト半径
return 2*G*M/(c*c)
class spacetime: # シュワルツシルト解で近似する
def __init__(self, h = 0, d_r = 0, d_theta = 0, theta = 0, d_phi = 0):
r = r_Earth + h
rs = Schwarzschild(M_Earth)
self.tau2_1 = 1 - rs / r # dt^2 = 1
self.tau2_2 = - 1 / (1 - rs / r) / (c * c) * d_r * d_r
self.tau2_3 = - r * r / (c * c) * (d_theta * d_theta + sym.sin(theta) * sym.sin(theta) * d_phi * d_phi)
def tau2(self):
return sym.N(self.tau2_1 + self.tau2_2 + self.tau2_3, 50)
def angular_v(v, r): # 速度と半径から角速度を求める
return v / r
def dt(spacetime_base, spacetime_target): # 基準地での1秒に対して対象での1秒がどのぐらい長いか
return sym.sqrt(spacetime_target.tau2() / spacetime_base.tau2()) - 1.0
検算してみる
1秒当たりどのぐらいずれるのか。
base = spacetime() # 地表
base_1m = spacetime(1) # 地表から1m
dt(base, base_1m)
$1.097597190⋅10^{−16}$
1mの高度差は余裕ですね。
1cmの高度差による重力差を検知できるというのは本当のようだ。
base_1ms = spacetime(0, 0, 0, Pi / 2, angular_v(1, r_Earth)) # 地表で1m/s
dt(base, base_1ms)
$−5.563250288⋅10^{−18}$
速度は自乗で効いてくるので50cm/sぐらいが現在の検知限界か。