ミンコフスキーで縮みを実感しよう
このワークシートはMath by Codeの一部です。
前回はミンコフスキー空間をテンソルから作ってみた。
今回はユーリッド空間とミンコフスキー空間を両方使って、ローレンツ変換の効果を実感しよう。
1.ローレンツ変換の計量テンソルはどうゆがんで見えるか
前回は、
系Sから系S’へのローレンツ変換の式は
T' = aT-v/c^2 aX
X’ =-vaT +aX
でした。
光速 c = 1,
速度 v =v/c=beta とするとき、
a = 1/sqrt(1-beta**2)=gammaとし、
va=beta*gamma=alphaとおけます。
すると、座標変換式は
tt = gamma * t - alpha * x
xx = -alpha * t + gamma * x
と簡単になりますね。
tt、xxは座標だから、「反変」ベクトルです。
座標の「基底」自体がどうなったのかを表示すために
alphaの符号を反転させて、「共変」ベクトルにします。
tt = gamma * t + alpha * x
xx = alpha * t + gamma * x
beta=0.6のとき、
gamma=1.25、alpha=0.75のときのミンコフスキー空間のゆがみがどう見えるかを視覚化できた。

1.比例でわかるローレンツ変換による時空の縮み
前回は、
系Sから系S’へのローレンツ変換の式から、
成分としての「反変」ベクトルではなく、
基底としての「共変」ベクトルを求めるためには、
光速 c = 1,速度 v =v/c=beta とするとき、
a = 1/sqrt(1-beta**2)=gammaとし、
beta*gamma=alphaとすると
tt = gamma * t + alpha * x
xx = alpha * t + gamma * x
と簡単になり、
beta=0.6のとき、
gamma=1.25、alpha=0.75のときのミンコフスキー空間のゆがみがどう見えるかを視覚化できた。
ミンコフスキー時空間と
縦軸たt、横軸がxのユークリッド時空間を原点を重ねてみると、
基底ベクトルがミンコフスキー時空間の方が伸びてます。
これはc=1、v=0.6としたときの図です。
よく、光速に近い速さで進むと時間と長さが縮むといいます。
でも、スカラー、ベクトルを含むテンソル量としての物理量自体は変わりません。
むしろ、慣性系としての座標系を変えるだけで、世界観としての基底ベクトルと相互の内積が変わる。
「世界をはかる網目、ものさし」が変わるから、
「ちがう数値、成分」に見えてくる
というだけということですね。
だから、時間、長さが縮むということは、その物差しの方が伸びているということですね。
これは、2世界の重ね書きでの単位ベクトルを比べるとき、
ミンコフスキー空間での単位ベクトルの方が伸びているからということからもうなずけます。
速い動きで縮むものは何?で見てきた具体例もうなずけるでしょう。
<時間の縮みは比例でわかる>
「車が光速の3/5倍の速さで進むと、かかる時間が4/5にちぢむ。たとえば、
地上の50年には、光速の3/5倍ロケットの中では40年しかたってないように見えるということ。」
これは、3/5倍の速さで50年間進んだ世界線を
ユークリッド空間の原点O(t,x)=(0,0)からR(50,30)までの線分で表す。
ミンコフスキー時空間での基底ベクトルの伸び具合がわかるように
下の図のように、ユークリッド時空間の1メモリをうすく5等分して、長さの比を数えてみます。
ロケットの軌跡はユークリッド時空間の点r(1.0, 0.6)を通る。
このrはミンコフスキー時空間では(0.8, 0)という成分になっていることが下図からわかる。
1.0:0.6:0.8:0=5:3:4:0=50:30:40:0
この比例の法則から、ユークリッド時空間の点R(50,30)の
ミンコフスキー時空間での成分は(40,0)になるはずだ。
つまり、ミンコフスキー時空間(ロケットの固有時間)では40年になることが比例式だけでわかるね。

<長さの縮みは比例でわかる>
「v=秒速30万㎞の3/5=秒速18万㎞の車なら、
長さが22.5万㎞のトンネルが22.5×4/5=18万㎞に縮むことになるね。
つまり、Bさんから見て22.5万㎞の長さのトンネルは、Aさんには18万㎞の長さにうつる。
Aさんの車は秒速18万㎞だから、Aさんの時間で1秒で通過できることになる。これは、Aさんの車の通る時空が縮んだだけで、Bさんの世界は通常と変わっていない。
22.5万kmのトンネルを秒速18万kmの車が通過するには、22.5÷18=5/4=1.25(秒)かかっている。
だから、Bさんに言わせれば「ほーら、1秒じゃあ無理でしょ」となる。
でも、Bさんの世界の1.25=5/4秒は車のスピードのおかげで
Aさんの世界では5/4×4/5=1秒になるということだね。」
これは、さっきと同様にユークリッド時空間に線分を書きましょう。
原点0(t,x)=(0,0)から、T(5/4, 3/4)を結ぶ。これがトンネルを進んだ車の世界線だ。
22.5/30=45/60=9/12=3/4というように、トンネルの長さを光速を基準にした数に直しておこう。
さっきの例でロケットの軌跡はユークリッド時空間の点r(1.0, 0.6)を通った。
このrはミンコフスキー時空間では(0.8, 0)という成分になっていることが図からわかったので、
点Tの成分をミンコフスキー時空間に翻訳してみよう。
1.0:0.6:0.8:0=5:3:4:0=5/4:3/4:4/4:0
この比例から、点R(5/4,3/4)のミンコフスキー時空間での成分は(4/4,0)になるはずだ。
つまり、ミンコフスキー時空間(車の固有時間)では4/4=1秒で通過になることが
比例式だけでわかるね。
2.ピタゴラス数でローレンツ変換をつかもう。
ピタゴラス数3:4:5=3/5:4/5:5/5=v:u:1を使った場合
つまり、光速c=1として、ロケット(車)v=3/5としたとき、
原点から出た世界線は、静止系のr(5/5, 3/5)を通り、慣性系のr(4/5,1)を通る。
だから、静止系の50の時間が、慣性系で40の時間に縮んで見えた。
時間が40÷50=4/5=u倍になった。
また、トンネルの長さがv=3/5の速さで5/4秒かかるはずの、3/4という長さだったのが、
v=3/5の速さで1秒で通れたから、3/5という長さになった。
つまり、長さが3/5÷3/4=4/5=u倍になった。
速さが光速のv倍だと、時間も長さもu倍になるということだね。
課題:細かいメモリの読み取り結果が、v,uを使って表示されることをたしかめてみよう。
原点から速さvで出た世界線は、
静止系の座標E(1, v)を通り、慣性系の座標M(u,0)を通ります。
座標(t、x)がユークリッドではE,ミンコフスキーではMとして、時空間に座標を表示します。
from sympy import symbols, sin, cos, Matrix, simplify, diag,sqrt,det,lambdify
import numpy as np
# 変数と変換式の定義
c=1 # speed of light
v = 0.6 # velocity
u = int(sqrt(1-v**2)*100)/100
gamma= 1/u
alpha = gamma*v
print("gamma=",revu,"alpha=", alpha)
x, t = symbols('x t')
gxt = np.diag([-1.0, 1.0])
def metricTensor(coords,vars,title):
J = coords.jacobian(vars) # ヤコビ行列 J
g = simplify(J.T *gxt*J) # 計量テンソルg
print(title)
display(g)
return g
# 座標変換式
tt = gamma* t + alpha * x
xx = alpha * t + gamma* x
coords = Matrix([tt, xx])
vars = [t, x]
G = metricTensor(coords,vars,"ミンコフスキーの計量テンソル g:")
J=sqrt(abs(det(G)))
print("ヤコビアンは",J)
func_t = lambdify((t, x), tt, 'numpy')
func_x = lambdify((t, x), xx, 'numpy')
t_vals = np.linspace(0, 1, 6) # 11本の線
x_vals = np.linspace(0, 1, 6)
fine_samples = np.linspace(0, 1, 100) # 線を滑らかにするためのサンプリング
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
# ユークリッド空間
for val in t_vals:
ax1.plot(fine_samples, np.full_like(fine_samples, val), 'gray', lw=0.5) # v=const
for val in x_vals:
ax1.plot(np.full_like(fine_samples, val), fine_samples, 'gray', lw=0.5) # u=const
ax1.set_title("orthogonal")
ax1.set_aspect('equal')
ax1.quiver(0,0,0,1, color='blue',linewidth=1,angles='xy', scale_units='xy', scale=1)
ax1.quiver(0,0,1,0, color='blue',linewidth=1,angles='xy', scale_units='xy', scale=1)
# ミンコフスキー空間
for tv in t_vals:
# vを配列に変換して渡す
t_arr = np.full_like(fine_samples, tv)
curr_t = func_t(fine_samples, t_arr)
curr_x = func_x(fine_samples, t_arr)
ax1.plot(curr_t, curr_x, 'blue', lw=1)
for xv in x_vals:
# uを配列に変換して渡す
x_arr = np.full_like(fine_samples, xv)
curr_t = func_t(x_arr, fine_samples)
curr_x = func_x(x_arr, fine_samples)
ax1.plot(curr_t, curr_x, 'red', lw=1)
m00,m01=coords.subs({t:0,x:1})
m10,m11=coords.subs({t:1,x:0})
ax1.text(v,1.0, f'E(1,{v}),M({u},0)', fontsize=10, verticalalignment="top")
ax1.scatter(v, 1.0, c='blue', s=30)
ax1.quiver(0,0,float(m00),float(m01), color='blue',linewidth=1,angles='xy', scale_units='xy', scale=1)
ax1.quiver(0,0,float(m10),float(m11), color='blue',linewidth=1,angles='xy', scale_units='xy', scale=1)
ax1.set_title("minkovski(t, x)")
ax1.set_aspect('equal')
ax1.set_xlabel('x'); ax1.set_ylabel('t');
plt.show()

<静止系E(1, v)=慣性系M(u,0)?>
ローレンツ変換の式は
光速 c = 1,速度 v=beta とするとき、
u = sqrt(1-v**2)
gamma = 1/u
beta*gamma=alphaとするとき、
「共変ベクトル」を求める式
tt = gamma * t + alpha * x
xx = alpha * t + gamma * x
ではなく、
「反変ベクトル」を求める式
tt = gamma * t - alpha * x
xx = -alpha * t + gamma * x
を使う。それは、「基底ではなく座標を計算するため」だからだね。
この座標変換式に世界線の静止系の座標E(t,x)=(1,v)を入れてみればいいね。
tt = gamma * t - beta*gamma* x=gamma(t-beta*x)=1/u(1-v^2)=1/u*u^2=u
xx=gamma(-beta*t+x)=1/u(-v+v)=0
だから、座標M(t,x)=(u,0)になるね。
課題:原点から速さvで出た世界線をかき、E(1, v)=M(u,0)と、ローレンツ収縮がu倍であることがわかるように、geogebraで視覚化してみよう。