Return to 重力場中の異なる地点での時間の進み方

SymPy でスカイツリー展望台での時間の進み

SymPy の import

In [1]:
from sympy import *
from sympy.abc import *
from sympy import I, pi, E

$\displaystyle \frac{\Delta t_2}{\Delta t_1} = $ Dtratio という変数に入れる。

In [2]:
# 1文字変数以外は定義しておく
var('rg')

Dtratio = sqrt(1-rg/(R + h))/sqrt(1-rg/R)
Dtratio
Out[2]:
$\displaystyle \frac{\sqrt{- \frac{rg}{R + h} + 1}}{\sqrt{1 – \frac{rg}{R}}}$

series() によるテイラー展開

series() 関数で,テイラー展開,やってんかい!

まず,$r_g$ について1次(2次未満だから Python 流に 2 を入れる)までのテイラー展開,series(Dtratio, rg, 0, 2)

In [3]:
tay = series(Dtratio, rg, 0, 2)
tay
Out[3]:
$\displaystyle 1 + rg \left(- \frac{1}{2 \left(R + h\right)} + \frac{1}{2 R}\right) + O\left(rg^{2}\right)$

removeO() してさらにテイラー展開

そしてそれをさらに $h$ について1次までのテイラー展開するために,いったん $O(r_g^2)$ の項を取り除いて普通の関数にしてから,もう一度 series() する。

In [4]:
tay1 = tay.removeO()
tay1
Out[4]:
$\displaystyle rg \left(- \frac{1}{2 \left(R + h\right)} + \frac{1}{2 R}\right) + 1$
In [5]:
tay11 = series(tay1, h, 0, 2).removeO()
tay11
Out[5]:
$\displaystyle 1 + \frac{h rg}{2 R^{2}}$

tay1 の $r_g$ に比例する一般相対論的補正項をとりだし,変数 ans に代入する。

In [6]:
ans = tay11 - 1
ans
Out[6]:
$\displaystyle \frac{h rg}{2 R^{2}}$

あとは,$r_g, h, R$ にそれぞれ数値を入れて ans の値を求め,これは1秒あたりの進みの違いであることに注意して,1日あたりの時計の進みを求める。

In [7]:
G = 6.674E-11
# 地球質量 
M = 5.972E24
# 光速 
c = 299792458
# 重力半径
nrg = 2*G*M/c**2
In [8]:
# 地球半径 
# 赤道半径を使うべきかは,悩むところ。
# ちょっと大きめな値を入れていることになるかも。
nR = 6378E3
# スカイツリー展望台の高さ 
nh = 450

subs() で数値を代入

変数 ans を構成する変数に以下のように .subs() で値を代入してみる。

In [9]:
ans.subs([(h, nh), (rg, nrg), (R, nR)])
Out[9]:
$\displaystyle 4.90578012575303 \cdot 10^{-14}$

これに,1日の秒数をかけて,1日あたりの時間の進みにすると…

In [10]:
_ * 60 * 60 * 24
Out[10]:
$\displaystyle 4.23859402865062 \cdot 10^{-9}$

結論

スカイツリー展望台では,時間は1日あたり10億分の4.2秒 すすむ。