重力と測地線#
Einstein field equation#
\(G\) : Einstein tensor - Wikipedia
\(\Lambda\) : Cosmological constant - Wikipedia
\(T_{\mu \nu}\) : Stress–energy tensor - Wikipedia
\(c\) : Speed of light - Wikipedia
Polar (spherical) coordinate to Cartesian coordinate#
from IPython.display import display
import sympy
from sympy import Function, Symbol
from sympy import sin, cos, tan, cot
Metric tensor#
Maniforld#
(1826 – 1866) Bernhard Riemann - Wikipedia
from sympy.diffgeom.rn import R3_r, R3_s
R3_r.manifold, R3_s.manifold
(R^3, R^3)
type(R3_r), type(R3_s)
(sympy.diffgeom.diffgeom.CoordSystem, sympy.diffgeom.diffgeom.CoordSystem)
print(R3_r)
print(R3_s)
rectangular
spherical
R3_r.base_scalars()
[x, y, z]
R3_s.base_scalars()
[r, theta, phi]
Coordinate transformation#
s = R3_s.transform(R3_r, R3_s.base_scalars())
s
s_r = R3_r.transform(R3_s, R3_r.base_scalars())
s_r
Line element#
for i in range(3):
display(R3_s.base_oneform(i))
for i in range(3):
display(R3_s.base_vector(i))
s
for i in range(3):
display(R3_s.base_vector(i)(s))
ds = (R3_s.base_vector(0)(s) * R3_s.base_oneform(0)
+ R3_s.base_vector(1)(s) * R3_s.base_oneform(1)
+ R3_s.base_vector(2)(s) * R3_s.base_oneform(2))
ds
First fundamental form#
ds2 = sympy.expand(ds.dot(ds))
ds2
sympy.simplify(ds2)
display(R3_s.base_oneform(0)**2, R3_s.base_oneform(1)**2, R3_s.base_oneform(2)**2)
sympy.simplify(ds2.coeff(R3_s.base_oneform(0)**2))
sympy.simplify(ds2.coeff(R3_s.base_oneform(1)**2))
sympy.simplify(ds2.coeff(R3_s.base_oneform(2)**2))
基底変換に伴う計量テンソルの変換公式#
g = sympy.diag(sympy.simplify(ds2.coeff(R3_s.base_oneform(0)**2)),
sympy.simplify(ds2.coeff(R3_s.base_oneform(1)**2)),
sympy.simplify(ds2.coeff(R3_s.base_oneform(2)**2)))
g
Curvature#
import sympy
from sympy import sin, cos, tan, cot
import einsteinpy
einsteinpy.__version__
'0.4.0'
from einsteinpy.symbolic import MetricTensor
from einsteinpy.symbolic import ChristoffelSymbols, RiemannCurvatureTensor
from einsteinpy.symbolic import RicciTensor, RicciScalar
Ball in \(\rm{R}^3\)#
syms = sympy.symbols('r theta phi')
syms
(r, theta, phi)
r, theta, phi = syms
g=sympy.diag(1,r**2,r**2 * sin(theta)**2)
g
g.tolist()
[[1, 0, 0], [0, r**2, 0], [0, 0, r**2*sin(theta)**2]]
metric = MetricTensor(g.tolist(), syms)
metric.tensor()
display(*metric.syms)
chr=ChristoffelSymbols.from_metric(metric)
chr.tensor()
display(*chr.syms)
Riemann curvature tensor - Wikipedia
“A Riemannian manifold has zero curvature if and only if it is flat, i.e. locally isometric to the Euclidean space”
rmc = RiemannCurvatureTensor.from_christoffels(chr)
rmc.tensor()
リーマン曲率テンソルが \(0\) なので平坦
Sphere (2-dim surface) in \(\rm{R}^3\)#
display(*metric.syms)
metric.tensor()
\(r\) を固定して \(2\) 次元に制限する:
metric[1:,1:]
chr[1:,1:,1:]
ChristoffelSymbols.from_metric(MetricTensor(metric[1:,1:],
syms=(theta,phi))).tensor()
chr2 = ChristoffelSymbols(chr[1:,1:,1:], (theta, phi),
parent_metric=MetricTensor(metric[1:,1:], (theta,phi)))
chr2.tensor()
display(*chr2.syms)
rmc2 = RiemannCurvatureTensor.from_christoffels(chr2)
rmc2.tensor()
リーマン曲率テンソルは \(0\) ではない
(1853 – 1925) Gregorio Ricci-Curbastro - Wikipedia
ricci = RicciTensor.from_christoffels(chr2)
ricci.tensor()
# 参考: ボールは平坦
RicciTensor.from_christoffels(chr).tensor()
from sympy.matrices import Matrix
Matrix(ricci.parent_metric.tensor()).inv()
R=RicciScalar.from_riccitensor(ricci)
R
RicciScalar2/r**2
R.tensor()
%%ai_ask
我々の宇宙のリーマン曲率テンソルについて
宇宙のリーマン曲率テンソルは、アインシュタインの一般相対性理論において、重力場の曲率を表す重要な量です。このテンソルは、時空の曲率を表し、重力場の強さや方向を決定します。宇宙のリーマン曲率テンソルは、宇宙の大規模構造や宇宙膨張の理解に不可欠なものであり、宇宙の形状や進化についての重要な情報を提供しています。また、宇宙のリーマン曲率テンソルは、宇宙の初期におけるインフレーション期間の理論的な予測にも関連しています。
%%ai_continue
リッチスカラーは?
リッチスカラーは、リーマン曲率テンソルを用いて計算される、曲率のスカラー量です。リッチスカラーは、時空の曲率がどの程度強いかを表し、重力場の強さを定量化するために使用されます。具体的には、リッチスカラーは、リーマン曲率テンソルの各成分を用いて計算され、その結果をトレースしたものです。リッチスカラーは、アインシュタインの一般相対性理論において、重力場の方程式の一部として使用されます。また、宇宙の大規模構造や宇宙膨張の理解にも重要な役割を果たしています。
%%ai_continue
我々の宇宙のリッチスカラーは?
現在の宇宙のリッチスカラーは、宇宙の大規模構造や宇宙膨張の観測結果から推定されています。最新の観測結果によると、宇宙のリッチスカラーは、ほぼ一定であり、その値はおよそ0.0001程度です。この値は、宇宙の曲率がほぼ平坦であることを示しています。また、この値は、宇宙の初期におけるインフレーション期間の理論的な予測とも一致しています。
Gaussian curvature - Wikipedia#Theorema_egregium