在这篇文章中,我想介绍现代宇宙学的基本假设,即FLRW模型,同时也作为爱因斯坦场方程的一个应用。
思路很简单:给定一个FLRW度规,代入场方程,然后我们就能推导出尺度因子\(a\)(它是度规的一个参数)如何随\(t\)坐标变化。这里我用一个Python程序来表达这些计算。
import sympy as sp
from sympy.diffgeom import Manifold, Patch, CoordSystem, TensorProduct
from sympy.diffgeom.diffgeom import metric_to_Ricci_components, metric_to_Christoffel_2nd
from sympy import Symbol, Function, sin, simplify, Matrix
# Define spacetime dimensions
dim = 4
# Define manifold and coordinate system (using spherical coordinates)
M = Manifold('M', dim)
patch = Patch('P', M)
coords = CoordSystem('coords', patch, [
Symbol('t', real=True),
Symbol('r', real=True, positive=True),
Symbol('theta', real=True, positive=True),
Symbol('phi', real=True)
])
# Get coordinate functions and basic one-forms
t, r, theta, phi = coords.coord_functions()
dt, dr, dtheta, dphi = coords.base_oneforms()
# Define scale factor and curvature parameter (using natural units c=1)
a = Function('a')(t) # Scale factor as a function of time
k = Symbol('k') # Spatial curvature parameter
# Construct FLRW metric
# ds² = -dt² + a(t)²[dr²/(1-kr²) + r²(dθ² + sin²θ dφ²)]
g = -TensorProduct(dt, dt) + \
a**2 * (TensorProduct(dr, dr)/(1-k*r**2) + \
r**2 * TensorProduct(dtheta, dtheta) + \
r**2 * sin(theta)**2 * TensorProduct(dphi, dphi))
# Matrix form of the metric (for Einstein tensor calculation)
g_matrix = Matrix([
[-1, 0, 0, 0],
[0, a**2/(1-k*r**2), 0, 0],
[0, 0, a**2*r**2, 0],
[0, 0, 0, a**2*r**2*sin(theta)**2]
])
# Calculate Christoffel symbols
Christoffel = metric_to_Christoffel_2nd(g)
# Calculate Ricci tensor
Ricci_tensor = metric_to_Ricci_components(g)
# Define coordinate index names
coord_names = ['t', 'r', 'θ', 'φ']
# Calculate inverse metric tensor
g_inverse = Matrix([
[-1, 0, 0, 0],
[0, (1-k*r**2)/a**2, 0, 0],
[0, 0, 1/(a**2*r**2), 0],
[0, 0, 0, 1/(a**2*r**2*sin(theta)**2)]
])
# Calculate Ricci scalar R = g^{μν} * R_{μν}
Ricci_scalar = 0
for i in range(dim):
for j in range(dim):
Ricci_scalar += g_inverse[i, j] * Ricci_tensor[i, j]
Ricci_scalar = simplify(Ricci_scalar)
# Calculate Einstein tensor G_μν = R_μν - (1/2) * g_μν * R
Einstein_tensor = Matrix([[0 for _ in range(dim)] for _ in range(dim)])
for i in range(dim):
for j in range(dim):
Einstein_tensor[i, j] = Ricci_tensor[i, j] - (1/2) * g_matrix[i, j] * Ricci_scalar
Einstein_tensor[i, j] = simplify(Einstein_tensor[i, j])
# Print Christoffel symbols
print("Christoffel symbols of FLRW metric (Γ^μ_νρ):")
for i in range(dim):
for j in range(dim):
for k in range(dim):
if Christoffel[i, j, k] != 0:
print(f"Γ^{coord_names[i]}_{coord_names[j]}{coord_names[k]} = {simplify(Christoffel[i, j, k])}")
# Print Ricci tensor
print("\nRicci tensor of FLRW metric (R_μν):")
for i in range(dim):
for j in range(dim):
if Ricci_tensor[i, j] != 0:
print(f"R_{coord_names[i]}{coord_names[j]} = {simplify(Ricci_tensor[i, j])}")
# Print Ricci scalar
print("\nRicci scalar of FLRW metric (R):")
print(f"R = {Ricci_scalar}")
# Print Einstein tensor
print("\nEinstein tensor of FLRW metric (G_μν):")
for i in range(dim):
for j in range(dim):
if Einstein_tensor[i, j] != 0:
print(f"G_{coord_names[i]}{coord_names[j]} = {Einstein_tensor[i, j]}")
Christoffel symbols of FLRW metric (Γ^μ_νρ):
Γ^t_rr = -a(t)*Subs(Derivative(a(_xi), _xi), _xi, t)/(k*r**2 - 1)
Γ^t_θθ = a(t)*r**2*Subs(Derivative(a(_xi), _xi), _xi, t)
Γ^t_φφ = a(t)*sin(theta)**2*r**2*Subs(Derivative(a(_xi), _xi), _xi, t)
Γ^r_tr = Subs(Derivative(a(_xi), _xi), _xi, t)/a(t)
Γ^r_rt = Subs(Derivative(a(_xi), _xi), _xi, t)/a(t)
Γ^r_rr = -k*r/(k*r**2 - 1)
Γ^r_θθ = k*r**3 - r
Γ^r_φφ = (k*r**2 - 1)*sin(theta)**2*r
Γ^θ_tθ = Subs(Derivative(a(_xi), _xi), _xi, t)/a(t)
Γ^θ_rθ = 1/r
Γ^θ_θt = Subs(Derivative(a(_xi), _xi), _xi, t)/a(t)
Γ^θ_θr = 1/r
Γ^θ_φφ = -sin(2*theta)/2
Γ^φ_tφ = Subs(Derivative(a(_xi), _xi), _xi, t)/a(t)
Γ^φ_rφ = 1/r
Γ^φ_θφ = 1/tan(theta)
Γ^φ_φt = Subs(Derivative(a(_xi), _xi), _xi, t)/a(t)
Γ^φ_φr = 1/r
Γ^φ_φθ = 1/tan(theta)
Ricci tensor of FLRW metric (R_μν):
R_tt = -3*Subs(Derivative(a(_xi), (_xi, 2)), _xi, t)/a(t)
R_rr = (-2*k - a(t)*Subs(Derivative(a(_xi), (_xi, 2)), _xi, t) - 2*Subs(Derivative(a(_xi), _xi), _xi, t)**2)/(k*r**2 - 1)
R_θθ = (2*k + a(t)*Subs(Derivative(a(_xi), (_xi, 2)), _xi, t) + 2*Subs(Derivative(a(_xi), _xi), _xi, t)**2)*r**2
R_φφ = (2*k + a(t)*Subs(Derivative(a(_xi), (_xi, 2)), _xi, t) + 2*Subs(Derivative(a(_xi), _xi), _xi, t)**2)*sin(theta)**2*r**2
Ricci scalar of FLRW metric (R):
R = 6*(k + a(t)*Subs(Derivative(a(_xi), (_xi, 2)), _xi, t) + Subs(Derivative(a(_xi), _xi), _xi, t)**2)/a(t)**2
Einstein tensor of FLRW metric (G_μν):
G_tt = 3.0*(k + Subs(Derivative(a(_xi), _xi), _xi, t)**2)/a(t)**2
G_rr = (1.0*k + 2.0*a(t)*Subs(Derivative(a(_xi), (_xi, 2)), _xi, t) + 1.0*Subs(Derivative(a(_xi), _xi), _xi, t)**2)/(k*r**2 - 1)
G_θθ = (-1.0*k - 2.0*a(t)*Subs(Derivative(a(_xi), (_xi, 2)), _xi, t) - 1.0*Subs(Derivative(a(_xi), _xi), _xi, t)**2)*r**2
G_φφ = (-1.0*k - 2.0*a(t)*Subs(Derivative(a(_xi), (_xi, 2)), _xi, t) - 1.0*Subs(Derivative(a(_xi), _xi), _xi, t)**2)*sin(theta)**2*r**2
将最终的爱因斯坦张量代入爱因斯坦方程。以\( G_{tt} \)为例:
\[ G_{tt} = 8\pi G T_{tt} \quad (\text{we use natural units, so } c = 1) \]\[ T_{tt} = \rho \quad (\rho \text{ can be understood as energy density or mass density, since } E = mc^2 \text{ in natural units}) \]因此,代入\( G_{tt} \)的结果,我们有:
\[ 3 \frac{k + \dot{a}^2}{a^2} = 8\pi G \rho \]\[ \left(\frac{\dot{a}}{a}\right)^2 = \frac{8\pi G}{3} \rho - \frac{k}{a^2} \]类似地,对于爱因斯坦张量的空间分量\( G_{ij} \),我们可以得到空间分量的弗里德曼方程:
\[ 2 \frac{\ddot{a}}{a} + \left(\frac{\dot{a}}{a}\right)^2 + \frac{k}{a^2} = -8\pi G p \]推导并不困难,但我想多强调一下FLRW度规的目的。它基于如下假设:
空间是各向同性的,用\( \frac{dr^2}{1-kr^2} + r^2(d\theta^2 + \sin^2\theta \, d\phi^2) \)这一项来表示。这就是该项的由来。
时空沿着\( t \)轴发生变化。这就是为什么在FLRW模型中会出现随时间变化的尺度因子\( a(t) \)。这源于对红移现象的实验观测,即遥远的恒星正在远离我们。然而,这并不意味着流形的形状会随时间改变。相反,这意味着如果我们沿着\( t \)轴移动,我们会发现流形的度规发生变化。流形本身并未改变。