今回は Python(SymPy)を活用する具体例として、膨張する宇宙モデルを記述する4次元アインシュタイン方程式の解(フリードマン・ルメートル・ロバートソン・ウォーカー計量、略称FLRW計量)をPython(SymPy)を使って確認してみたいと思います。とくに膨張宇宙を議論するうえでの基礎方程式となる『フリードマン方程式』を導出します。また、現在観測されている膨張宇宙を説明する暗黒エネルギーについても簡単に触れます。
アインシュタイン方程式の解のいくつかは、過去の記事で見ています。あわせて眺めてみてください:
pianofisica.hatenablog.com
pianofisica.hatenablog.com
pianofisica.hatenablog.com
4次元FLRW計量の具体形
本記事内で未定義の量や用語の詳細については、上でリンクを貼った過去の記事を参照してください。
真空中のEinstein方程式は
で与えられます。ここで はEinsteinテンソルです。FLRW計量は、時刻 の未知関数 (スケール因子)によって
で与えられる解です。ただし、これらの成分は座標系
に関するものとします。つまり
です。ここでパラメタ は時空の曲率に関する量で、曲率が正(閉じている)・ゼロ(平坦)・負(開いている)の場合に応じてそれぞれ これらをSymPyに入力します。
%reset import sympy as sp sp.var('c, k, t, r, theta, phi') xi = sp.Matrix([ [t],[r],[theta],[phi] ]) D = len(xi) a = sp.Function('a')(t) g = sp.Matrix([ [-c**2, 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 * sp.sin(theta)**2] ]) ginv = g.inv() def Gamma(k,i,j): gm = 0 for n in range(D): gm = gm + sp.Rational(1,2)*ginv[k,n]*(g[n,i].diff(xi[j])\ +g[n,j].diff(xi[i])-g[i,j].diff(xi[n])) return gm def R(i,j,k,l): rm = Gamma(i,l,j).diff(xi[k]) - Gamma(i,k,j).diff(xi[l]) for n in range(D): rm = rm + Gamma(n,l,j)*Gamma(i,k,n) - Gamma(n,k,j)*Gamma(i,l,n) return rm def Ricc(j,k): ric = 0 for n in range(D): ric = ric + R(n,j,n,k) return ric RiccMat = sp.Matrix([ [Ricc(0,0), Ricc(0,1), Ricc(0,2), Ricc(0,3)], [Ricc(1,0), Ricc(1,1), Ricc(1,2), Ricc(1,3)], [Ricc(2,0), Ricc(2,1), Ricc(2,2), Ricc(2,3)], [Ricc(3,0), Ricc(3,1), Ricc(3,2), Ricc(3,3)] ]) R = sp.simplify((ginv*RiccMat).trace()) GMat = sp.simplify(RiccMat - sp.Rational(1,2)*g*R) GMat
より、Einsteinテンソルが
と求まります。Einstein方程式から、未知関数 について
が要請されます。ここで は未知関数 の時刻 に関する導関数です。さて、第1式を使うと第2式は
です。さらに第1式の両辺を時間微分すると
となって、第2式が自動的に導かれることがわかります。よって第1式だけ考えれば良いことがわかります。すなわち
です。分母の を払えば
です。時空の曲率が平坦な場合( )には となって(スケール倍を除いて)Minkowski時空に一致します。曲率が負の場合( )には
であることがわかります。
物質場を含めた場合
完全流体の物質場による次のエネルギー・運動量テンソルを考えます:
ここで は圧力、 は密度です。圧力と密度を関係付ける式を状態方程式といいます。とくに状態方程式が となる場合、エネルギー・運動量テンソルは時空の計量に比例し、従って宇宙項( )と同一視できます。
物質場が存在するとき、アインシュタイン方程式は
と変更されます。ここでは宇宙定数 も含めました。これらをSymPyに入力して計算します:
%reset import sympy as sp sp.var('c, k, t, r, theta, phi, P, rho, G, Lambda') xi = sp.Matrix([ [t],[r],[theta],[phi] ]) D = len(xi) a = sp.Function('a')(t) P = sp.Function('P')(t) rho = sp.Function('rho')(t) g = sp.Matrix([ [-c**2, 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 * sp.sin(theta)**2] ]) E00 = sp.Matrix([ [1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ]) T = P*g + (P*c**2 + rho*c**4)*E00 ginv = g.inv() def Gamma(k,i,j): gm = 0 for n in range(D): gm = gm + sp.Rational(1,2)*ginv[k,n]*(g[n,i].diff(xi[j])\ +g[n,j].diff(xi[i])-g[i,j].diff(xi[n])) return gm def R(i,j,k,l): rm = Gamma(i,l,j).diff(xi[k]) - Gamma(i,k,j).diff(xi[l]) for n in range(D): rm = rm + Gamma(n,l,j)*Gamma(i,k,n) - Gamma(n,k,j)*Gamma(i,l,n) return rm def Ricc(j,k): ric = 0 for n in range(D): ric = ric + R(n,j,n,k) return ric RiccMat = sp.Matrix([ [Ricc(0,0), Ricc(0,1), Ricc(0,2), Ricc(0,3)], [Ricc(1,0), Ricc(1,1), Ricc(1,2), Ricc(1,3)], [Ricc(2,0), Ricc(2,1), Ricc(2,2), Ricc(2,3)], [Ricc(3,0), Ricc(3,1), Ricc(3,2), Ricc(3,3)] ]) R = sp.simplify((ginv*RiccMat).trace()) GMat = sp.simplify(RiccMat - sp.Rational(1,2)*g*R) GMat + Lambda*g - (8*sp.pi*G/c**4)*T
すると、未知関数 に関する方程式系
を得ます。
フリードマン方程式
上で得た方程式系の第1式
をとくにフリードマン方程式といい、これは膨張宇宙を議論する上での基礎となります。実は、真空のときと同様に上の方程式系の第2式は第1式から従います。このことを見るために、まず第1式と第2式を組み合わせて
としておきます。次に第1式を時間微分してみます。
ここで最後の等号にふたたび第1式を用いています。さて、これが(第1式と組み合わせた)第2式(式 )と整合して自明となるためには
であれば良いことがわかります。実際、この式は物質場のエネルギー保存則から従います(このことは次の節で示します)。よって第2式は、第1式(とエネルギー保存則)から導かれることが示されました。
エネルギー保存則
上の議論で用いた、エネルギー保存則による関係式を示しましょう。それは曲がった時空中の連続の式
を満たすというものです。共変微分を具体的に書き下すと
となります。これを計算してみましょう:
eq = 0 for k in range(D): for l in range(D): for m in range(D): eq = eq + ginv[k,l]*( - Gamma(m,k,l)*T[m,0] - Gamma(m,k,0)*T[l,m] ) eq = eq + ginv[k,l]*( T[l,0].diff(xi[k]) ) eq
より、関係式
を得ます。
加速膨張宇宙とダークエネルギー
特別な場合として時空の曲率をゼロ( )かつ宇宙定数ゼロ( )として、式 を考えてましょう。
より
すなわち
となるとき、スケール因子 は加速的に増大(加速膨張)することがわかります。
観測から宇宙は加速膨張していることが知られており、したがって であることが示唆されます。ところが、現在までに観測されている物質ではこの関係式が満たされません。そこでこの加速膨張を説明するために導入されたのが『ダークエネルギー』です。
現在の宇宙観測からおおよそ であることが知られており、エネルギー保存則は
となります。よってフリードマン方程式
の右辺 は(近似的に)定数となります。この定数 をハッブル定数といい、宇宙が膨張するスピードの尺度になります。事実、フリードマン方程式は単純な1階微分方程式になり、その解は
であり、指数関数的な膨張を記述することがわかります。