重力場中の異なる地点,例えば東京スカイツリー展望台と地上の時計の進み方の違いを調べるために,地球の外部重力場は球対称真空なシュバルツシルト時空で記述されてるとして話を進める。(厳密には球対称ではないし,また自転しているが… )
この実験は,2020年に多くのネットニュースで取り上げられたので検索するといろいろ見つかる。たとえば,(有料記事が多いので無料で全部読める記事を探すと… )
光の振動数から定義される時間の進み
4元速度
シュバルツシルト時空中の静止観測者が観測する光の振動数は,
となり,同じ光源から放たれた同じ光,つまり同じ
異なる地点における時間の進み方の違い
したがって,地球中心から
となり,スカイツリー展望台においた時計の進みのほうがはやいということがわかる。
どのくらい進むのか,定量的な計算をしてみよう。
以下では,
を
Maxima-Jupyter による計算例
スカイツリー展望台での時間の進み
Dtratio
という変数に入れる。
Dtratio: sqrt(1-rg/(R + h))/sqrt(1-rg/R);
後述するように具体的な数値を入れると
taylor()
関数で,テイラー展開,やってんかい!
まず,taylor(Dtratio, rg, 0, 1)
。
そしてそれをさらに taylor(%, h, 0, 1)
して,結果を変数 tay1
に代入する。
taylor(Dtratio, rg, 0, 1);
tay1: taylor(%, h, 0, 1);
tay1
の coeff()
関数を使ってとりだし,変数 ans
に代入する。
ans: rg * coeff(tay1, rg, 1);
または,てっとり早く,tay1
から
tay1 - 1;
あとは,ans
の値を求め,これは1秒あたりの進みの違いであることに注意して,1日あたりの時計の進みを求める。
G: 6.674E-11;
/* 地球質量 */
M: 5.972E24;
/* 光速 */
c: 299792458;
rg: 2*G*M/c**2;
/* 地球半径 */
/* 赤道半径を使うべきかは,悩むところ。*/
/* ちょっと大きめな値を入れていることになるかも。*/
R: 6378E3;
/* スカイツリー展望台の高さ。思わず 634m と言ってしまいそうだが... */
h: 450;
変数 ans
を構成する変数の数値を入れても,ans
そのものは最初の定義と変わらない。
ans;
そんなときは,ev(ans);
とすると,evaluate つまり数値を入れて値を出してくれる。
/* ev() 関数は Evaluate つまり(数値を入れて)値を出してくれる。*/
ev(ans);
これに,1日の秒数をかけて,1日あたりの時間の進みにすると…
fpprintprec: 3$ /* 16 桁も表示する必要はないので,表示桁を 3桁にする */
print("スカイツリー展望台では,1日あたり", ev(ans) * 24 * 60 * 60, "秒進む。")$
結論:
スカイツリー展望台では,時間は1日あたり10億分の 4.2 秒 すすむ。