{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Solving Einstein equation to get Kottler solution\n", "\n", "This Jupyter/SageMath notebook is relative to the lectures\n", "[Geometry and physics of black holes](https://luth.obspm.fr/~luthier/gourgoulhon/bh16/).\n", "It involves computations based on differential geometry tools developed through the [SageManifolds project](https://sagemanifolds.obspm.fr)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'SageMath version 9.5.beta5, Release Date: 2021-10-28'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "version()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we set up the notebook to display mathematical objects using LaTeX formatting:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%display latex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Spacetime\n", "\n", "We declare the spacetime manifold $M$:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4-dimensional differentiable manifold M\n" ] } ], "source": [ "M = Manifold(4, 'M')\n", "print(M)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We declare the chart of spherical coordinates $(t,r,\\theta,\\phi)$:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(M,(t, r, {\\theta}, {\\phi})\\right)\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(M,(t, r, {\\theta}, {\\phi})\\right)$$" ], "text/plain": [ "Chart (M, (t, r, th, ph))" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X. = M.chart(r't r:(0,+oo) th:(0,pi):\\theta ph:(0,2*pi):\\phi')\n", "X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The static and spherically symmetric metric ansatz, with the unknown functions $A(r)$ and $B(r)$:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}g = -A\\left(r\\right) \\mathrm{d} t\\otimes \\mathrm{d} t + B\\left(r\\right) \\mathrm{d} r\\otimes \\mathrm{d} r + r^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + r^{2} \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}g = -A\\left(r\\right) \\mathrm{d} t\\otimes \\mathrm{d} t + B\\left(r\\right) \\mathrm{d} r\\otimes \\mathrm{d} r + r^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + r^{2} \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}$$" ], "text/plain": [ "g = -A(r) dt⊗dt + B(r) dr⊗dr + r^2 dth⊗dth + r^2*sin(th)^2 dph⊗dph" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = M.lorentzian_metric('g')\n", "A = function('A')\n", "B = function('B')\n", "g[0,0] = -A(r)\n", "g[1,1] = B(r)\n", "g[2,2] = r^2\n", "g[3,3] = (r*sin(th))^2\n", "g.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Christoffel symbols of $g$, with respect to the default chart:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} \\Gamma_{ \\phantom{\\, t} \\, t \\, r }^{ \\, t \\phantom{\\, t} \\phantom{\\, r} } & = & \\frac{\\frac{\\partial\\,A}{\\partial r}}{2 \\, A\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, r} \\, t \\, t }^{ \\, r \\phantom{\\, t} \\phantom{\\, t} } & = & \\frac{\\frac{\\partial\\,A}{\\partial r}}{2 \\, B\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, r} \\, r \\, r }^{ \\, r \\phantom{\\, r} \\phantom{\\, r} } & = & \\frac{\\frac{\\partial\\,B}{\\partial r}}{2 \\, B\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, r} \\, {\\theta} \\, {\\theta} }^{ \\, r \\phantom{\\, {\\theta}} \\phantom{\\, {\\theta}} } & = & -\\frac{r}{B\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, r} \\, {\\phi} \\, {\\phi} }^{ \\, r \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & -\\frac{r \\sin\\left({\\theta}\\right)^{2}}{B\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, {\\theta}} \\, r \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, r} \\phantom{\\, {\\theta}} } & = & \\frac{1}{r} \\\\ \\Gamma_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & -\\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right) \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, r \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, r} \\phantom{\\, {\\phi}} } & = & \\frac{1}{r} \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\frac{\\cos\\left({\\theta}\\right)}{\\sin\\left({\\theta}\\right)} \\end{array}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} \\Gamma_{ \\phantom{\\, t} \\, t \\, r }^{ \\, t \\phantom{\\, t} \\phantom{\\, r} } & = & \\frac{\\frac{\\partial\\,A}{\\partial r}}{2 \\, A\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, r} \\, t \\, t }^{ \\, r \\phantom{\\, t} \\phantom{\\, t} } & = & \\frac{\\frac{\\partial\\,A}{\\partial r}}{2 \\, B\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, r} \\, r \\, r }^{ \\, r \\phantom{\\, r} \\phantom{\\, r} } & = & \\frac{\\frac{\\partial\\,B}{\\partial r}}{2 \\, B\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, r} \\, {\\theta} \\, {\\theta} }^{ \\, r \\phantom{\\, {\\theta}} \\phantom{\\, {\\theta}} } & = & -\\frac{r}{B\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, r} \\, {\\phi} \\, {\\phi} }^{ \\, r \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & -\\frac{r \\sin\\left({\\theta}\\right)^{2}}{B\\left(r\\right)} \\\\ \\Gamma_{ \\phantom{\\, {\\theta}} \\, r \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, r} \\phantom{\\, {\\theta}} } & = & \\frac{1}{r} \\\\ \\Gamma_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & -\\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right) \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, r \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, r} \\phantom{\\, {\\phi}} } & = & \\frac{1}{r} \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\frac{\\cos\\left({\\theta}\\right)}{\\sin\\left({\\theta}\\right)} \\end{array}$$" ], "text/plain": [ "Gam^t_t,r = 1/2*d(A)/dr/A(r) \n", "Gam^r_t,t = 1/2*d(A)/dr/B(r) \n", "Gam^r_r,r = 1/2*d(B)/dr/B(r) \n", "Gam^r_th,th = -r/B(r) \n", "Gam^r_ph,ph = -r*sin(th)^2/B(r) \n", "Gam^th_r,th = 1/r \n", "Gam^th_ph,ph = -cos(th)*sin(th) \n", "Gam^ph_r,ph = 1/r \n", "Gam^ph_th,ph = cos(th)/sin(th) " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.christoffel_symbols_display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Einstein equation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The cosmological constant:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\Lambda}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\Lambda}$$" ], "text/plain": [ "Lamb" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Lamb = var('Lamb', latex_name=r'\\Lambda')\n", "Lamb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Einstein equation:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field of symmetric bilinear forms E on the 4-dimensional differentiable manifold M\n" ] } ], "source": [ "EE = g.ricci() - 1/2*g.ricci_scalar()*g + Lamb*g\n", "EE.set_name('E')\n", "print(EE)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} E_{ \\, t \\, t }^{ \\phantom{\\, t}\\phantom{\\, t} } & = & -\\frac{{\\left({\\Lambda} r^{2} - 1\\right)} A\\left(r\\right) B\\left(r\\right)^{2} - r A\\left(r\\right) \\frac{\\partial\\,B}{\\partial r} + A\\left(r\\right) B\\left(r\\right)}{r^{2} B\\left(r\\right)^{2}} \\\\ E_{ \\, r \\, r }^{ \\phantom{\\, r}\\phantom{\\, r} } & = & \\frac{{\\left({\\Lambda} r^{2} - 1\\right)} A\\left(r\\right) B\\left(r\\right) + r \\frac{\\partial\\,A}{\\partial r} + A\\left(r\\right)}{r^{2} A\\left(r\\right)} \\\\ E_{ \\, {\\theta} \\, {\\theta} }^{ \\phantom{\\, {\\theta}}\\phantom{\\, {\\theta}} } & = & \\frac{4 \\, {\\Lambda} r^{2} A\\left(r\\right)^{2} B\\left(r\\right)^{2} - r^{2} B\\left(r\\right) \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2} + 2 \\, r^{2} A\\left(r\\right) B\\left(r\\right) \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, r A\\left(r\\right) B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} - {\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} \\frac{\\partial\\,B}{\\partial r}}{4 \\, A\\left(r\\right)^{2} B\\left(r\\right)^{2}} \\\\ E_{ \\, {\\phi} \\, {\\phi} }^{ \\phantom{\\, {\\phi}}\\phantom{\\, {\\phi}} } & = & \\frac{{\\left(4 \\, {\\Lambda} r^{2} A\\left(r\\right)^{2} B\\left(r\\right)^{2} - r^{2} B\\left(r\\right) \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2} + 2 \\, r^{2} A\\left(r\\right) B\\left(r\\right) \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, r A\\left(r\\right) B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} - {\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} \\frac{\\partial\\,B}{\\partial r}\\right)} \\sin\\left({\\theta}\\right)^{2}}{4 \\, A\\left(r\\right)^{2} B\\left(r\\right)^{2}} \\end{array}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} E_{ \\, t \\, t }^{ \\phantom{\\, t}\\phantom{\\, t} } & = & -\\frac{{\\left({\\Lambda} r^{2} - 1\\right)} A\\left(r\\right) B\\left(r\\right)^{2} - r A\\left(r\\right) \\frac{\\partial\\,B}{\\partial r} + A\\left(r\\right) B\\left(r\\right)}{r^{2} B\\left(r\\right)^{2}} \\\\ E_{ \\, r \\, r }^{ \\phantom{\\, r}\\phantom{\\, r} } & = & \\frac{{\\left({\\Lambda} r^{2} - 1\\right)} A\\left(r\\right) B\\left(r\\right) + r \\frac{\\partial\\,A}{\\partial r} + A\\left(r\\right)}{r^{2} A\\left(r\\right)} \\\\ E_{ \\, {\\theta} \\, {\\theta} }^{ \\phantom{\\, {\\theta}}\\phantom{\\, {\\theta}} } & = & \\frac{4 \\, {\\Lambda} r^{2} A\\left(r\\right)^{2} B\\left(r\\right)^{2} - r^{2} B\\left(r\\right) \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2} + 2 \\, r^{2} A\\left(r\\right) B\\left(r\\right) \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, r A\\left(r\\right) B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} - {\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} \\frac{\\partial\\,B}{\\partial r}}{4 \\, A\\left(r\\right)^{2} B\\left(r\\right)^{2}} \\\\ E_{ \\, {\\phi} \\, {\\phi} }^{ \\phantom{\\, {\\phi}}\\phantom{\\, {\\phi}} } & = & \\frac{{\\left(4 \\, {\\Lambda} r^{2} A\\left(r\\right)^{2} B\\left(r\\right)^{2} - r^{2} B\\left(r\\right) \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2} + 2 \\, r^{2} A\\left(r\\right) B\\left(r\\right) \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, r A\\left(r\\right) B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} - {\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} \\frac{\\partial\\,B}{\\partial r}\\right)} \\sin\\left({\\theta}\\right)^{2}}{4 \\, A\\left(r\\right)^{2} B\\left(r\\right)^{2}} \\end{array}$$" ], "text/plain": [ "E_t,t = -((Lamb*r^2 - 1)*A(r)*B(r)^2 - r*A(r)*d(B)/dr + A(r)*B(r))/(r^2*B(r)^2) \n", "E_r,r = ((Lamb*r^2 - 1)*A(r)*B(r) + r*d(A)/dr + A(r))/(r^2*A(r)) \n", "E_th,th = 1/4*(4*Lamb*r^2*A(r)^2*B(r)^2 - r^2*B(r)*(d(A)/dr)^2 + 2*r^2*A(r)*B(r)*d^2(A)/dr^2 + 2*r*A(r)*B(r)*d(A)/dr - (r^2*A(r)*d(A)/dr + 2*r*A(r)^2)*d(B)/dr)/(A(r)^2*B(r)^2) \n", "E_ph,ph = 1/4*(4*Lamb*r^2*A(r)^2*B(r)^2 - r^2*B(r)*(d(A)/dr)^2 + 2*r^2*A(r)*B(r)*d^2(A)/dr^2 + 2*r*A(r)*B(r)*d(A)/dr - (r^2*A(r)*d(A)/dr + 2*r*A(r)^2)*d(B)/dr)*sin(th)^2/(A(r)^2*B(r)^2) " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EE.display_comp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simplifying and rearranging the equations" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\frac{{\\left({\\Lambda} r^{2} - 1\\right)} A\\left(r\\right) B\\left(r\\right)^{2} - r A\\left(r\\right) \\frac{\\partial\\,B}{\\partial r} + A\\left(r\\right) B\\left(r\\right)}{A\\left(r\\right)}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\frac{{\\left({\\Lambda} r^{2} - 1\\right)} A\\left(r\\right) B\\left(r\\right)^{2} - r A\\left(r\\right) \\frac{\\partial\\,B}{\\partial r} + A\\left(r\\right) B\\left(r\\right)}{A\\left(r\\right)}$$" ], "text/plain": [ "-((Lamb*r^2 - 1)*A(r)*B(r)^2 - r*A(r)*d(B)/dr + A(r)*B(r))/A(r)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq0 = EE[0,0]*r^2*B(r)^2/A(r); eq0" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\left({\\Lambda} r^{2} - 1\\right)} A\\left(r\\right) B\\left(r\\right) + r \\frac{\\partial\\,A}{\\partial r} + A\\left(r\\right)\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\left({\\Lambda} r^{2} - 1\\right)} A\\left(r\\right) B\\left(r\\right) + r \\frac{\\partial\\,A}{\\partial r} + A\\left(r\\right)$$" ], "text/plain": [ "(Lamb*r^2 - 1)*A(r)*B(r) + r*d(A)/dr + A(r)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq1 = EE[1,1]*r^2*A(r); eq1" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}4 \\, {\\Lambda} r^{2} A\\left(r\\right)^{2} B\\left(r\\right)^{2} - r^{2} B\\left(r\\right) \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2} + 2 \\, r^{2} A\\left(r\\right) B\\left(r\\right) \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, r A\\left(r\\right) B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} - {\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} \\frac{\\partial\\,B}{\\partial r}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}4 \\, {\\Lambda} r^{2} A\\left(r\\right)^{2} B\\left(r\\right)^{2} - r^{2} B\\left(r\\right) \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2} + 2 \\, r^{2} A\\left(r\\right) B\\left(r\\right) \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, r A\\left(r\\right) B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} - {\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} \\frac{\\partial\\,B}{\\partial r}$$" ], "text/plain": [ "4*Lamb*r^2*A(r)^2*B(r)^2 - r^2*B(r)*(d(A)/dr)^2 + 2*r^2*A(r)*B(r)*d^2(A)/dr^2 + 2*r*A(r)*B(r)*d(A)/dr - (r^2*A(r)*d(A)/dr + 2*r*A(r)^2)*d(B)/dr" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq2 = EE[2,2]*4*A(r)^2*B(r)^2; eq2" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}4 \\, {\\Lambda} r^{2} A\\left(r\\right)^{2} B\\left(r\\right)^{2} - r^{2} B\\left(r\\right) \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2} + 2 \\, r^{2} A\\left(r\\right) B\\left(r\\right) \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, r A\\left(r\\right) B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} - {\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} \\frac{\\partial\\,B}{\\partial r}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}4 \\, {\\Lambda} r^{2} A\\left(r\\right)^{2} B\\left(r\\right)^{2} - r^{2} B\\left(r\\right) \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2} + 2 \\, r^{2} A\\left(r\\right) B\\left(r\\right) \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, r A\\left(r\\right) B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} - {\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} \\frac{\\partial\\,B}{\\partial r}$$" ], "text/plain": [ "4*Lamb*r^2*A(r)^2*B(r)^2 - r^2*B(r)*(d(A)/dr)^2 + 2*r^2*A(r)*B(r)*d^2(A)/dr^2 + 2*r*A(r)*B(r)*d(A)/dr - (r^2*A(r)*d(A)/dr + 2*r*A(r)^2)*d(B)/dr" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3 = EE[3,3]*4*A(r)^2*B(r)^2/sin(th)^2; eq3" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}$$" ], "text/plain": [ "True" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq3 == eq2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solving Einstein equation\n", "\n", "The following combination of eq0 and eq1 is particularly simple:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{r B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + r A\\left(r\\right) \\frac{\\partial\\,B}{\\partial r}}{r}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{r B\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + r A\\left(r\\right) \\frac{\\partial\\,B}{\\partial r}}{r}$$" ], "text/plain": [ "(r*B(r)*d(A)/dr + r*A(r)*d(B)/dr)/r" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq4 = (eq0*A(r) + eq1*B(r))/r; eq4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The solution is $A(r)B(r)=C$, where $C$ is a constant:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{C}{A\\left(r\\right)}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{C}{A\\left(r\\right)}$$" ], "text/plain": [ "_C/A(r)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = desolve(eq4.expr() == 0, B(r), ivar=r)\n", "s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us rename the constant to $\\alpha$:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}r \\ {\\mapsto}\\ \\frac{{\\alpha}}{A\\left(r\\right)}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}r \\ {\\mapsto}\\ \\frac{{\\alpha}}{A\\left(r\\right)}$$" ], "text/plain": [ "r |--> alpha/A(r)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('alpha', latex_name=r'\\alpha')\n", "B_sol(r) = s.subs(_C=alpha); B_sol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We replace $B(r)$ by the above value in the remaining equations:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\left({\\Lambda} r^{2} - 1\\right)} {\\alpha} + r \\frac{\\partial\\,A}{\\partial r} + A\\left(r\\right)\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\left({\\Lambda} r^{2} - 1\\right)} {\\alpha} + r \\frac{\\partial\\,A}{\\partial r} + A\\left(r\\right)$$" ], "text/plain": [ "(Lamb*r^2 - 1)*alpha + r*d(A)/dr + A(r)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq5 = X.function(eq1.expr().substitute_function(B, B_sol)); eq5" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}4 \\, {\\Lambda} {\\alpha}^{2} r^{2} - \\frac{{\\alpha} r^{2} \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2}}{A\\left(r\\right)} + 2 \\, {\\alpha} r^{2} \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, {\\alpha} r \\frac{\\partial\\,A}{\\partial r} + \\frac{{\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} {\\alpha} \\frac{\\partial\\,A}{\\partial r}}{A\\left(r\\right)^{2}}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}4 \\, {\\Lambda} {\\alpha}^{2} r^{2} - \\frac{{\\alpha} r^{2} \\left(\\frac{\\partial\\,A}{\\partial r}\\right)^{2}}{A\\left(r\\right)} + 2 \\, {\\alpha} r^{2} \\frac{\\partial^2\\,A}{\\partial r ^ 2} + 2 \\, {\\alpha} r \\frac{\\partial\\,A}{\\partial r} + \\frac{{\\left(r^{2} A\\left(r\\right) \\frac{\\partial\\,A}{\\partial r} + 2 \\, r A\\left(r\\right)^{2}\\right)} {\\alpha} \\frac{\\partial\\,A}{\\partial r}}{A\\left(r\\right)^{2}}$$" ], "text/plain": [ "4*Lamb*alpha^2*r^2 - alpha*r^2*(d(A)/dr)^2/A(r) + 2*alpha*r^2*d^2(A)/dr^2 + 2*alpha*r*d(A)/dr + (r^2*A(r)*d(A)/dr + 2*r*A(r)^2)*alpha*d(A)/dr/A(r)^2" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq6 = X.function(eq2.expr().substitute_function(B, B_sol)); eq6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us solve eq5 for $A(r)$. Note that we are using eq5.expr() to get a symbolic expression, as expected by the function desolve, while eq5 is a coordinate function. " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\frac{1}{3} \\, {\\Lambda} {\\alpha} r^{2} + {\\alpha} + \\frac{C}{r}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\frac{1}{3} \\, {\\Lambda} {\\alpha} r^{2} + {\\alpha} + \\frac{C}{r}$$" ], "text/plain": [ "-1/3*Lamb*alpha*r^2 + alpha + _C/r" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = desolve(eq5.expr() == 0, A(r), ivar=r)\n", "s.expand()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We rename the constant $C$ to $-2m$ and set the value of constant $\\alpha$ to $1$:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}r \\ {\\mapsto}\\ -\\frac{1}{3} \\, {\\Lambda} r^{2} - \\frac{2 \\, m}{r} + 1\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}r \\ {\\mapsto}\\ -\\frac{1}{3} \\, {\\Lambda} r^{2} - \\frac{2 \\, m}{r} + 1$$" ], "text/plain": [ "r |--> -1/3*Lamb*r^2 - 2*m/r + 1" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('m')\n", "A_sol(r) = s.subs(_C=-2*m, alpha=1).expand()\n", "A_sol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us check that eq6 is fulfilled by the found value of $A(r)$:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}0\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}0$$" ], "text/plain": [ "0" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq6.expr().substitute_function(A, A_sol).subs(alpha=1).simplify_full()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Final expression of the metric\n", "\n", "We have got the Kottler metric:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}g = \\left( \\frac{1}{3} \\, {\\Lambda} r^{2} + \\frac{2 \\, m}{r} - 1 \\right) \\mathrm{d} t\\otimes \\mathrm{d} t + \\left( -\\frac{3}{{\\Lambda} r^{2} + \\frac{6 \\, m}{r} - 3} \\right) \\mathrm{d} r\\otimes \\mathrm{d} r + r^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + r^{2} \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}g = \\left( \\frac{1}{3} \\, {\\Lambda} r^{2} + \\frac{2 \\, m}{r} - 1 \\right) \\mathrm{d} t\\otimes \\mathrm{d} t + \\left( -\\frac{3}{{\\Lambda} r^{2} + \\frac{6 \\, m}{r} - 3} \\right) \\mathrm{d} r\\otimes \\mathrm{d} r + r^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + r^{2} \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}$$" ], "text/plain": [ "g = (1/3*Lamb*r^2 + 2*m/r - 1) dt⊗dt - 3/(Lamb*r^2 + 6*m/r - 3) dr⊗dr + r^2 dth⊗dth + r^2*sin(th)^2 dph⊗dph" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g[0,0] = -A_sol(r)\n", "g[1,1] = 1/A_sol(r)\n", "g.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "which reduces to Schwarzschild metric as soon as the cosmological constant vanishes." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} \\Gamma_{ \\phantom{\\, t} \\, t \\, r }^{ \\, t \\phantom{\\, t} \\phantom{\\, r} } & = & \\frac{{\\Lambda} r^{3} - 3 \\, m}{{\\Lambda} r^{4} + 6 \\, m r - 3 \\, r^{2}} \\\\ \\Gamma_{ \\phantom{\\, r} \\, t \\, t }^{ \\, r \\phantom{\\, t} \\phantom{\\, t} } & = & \\frac{{\\Lambda}^{2} r^{6} + 3 \\, {\\Lambda} m r^{3} - 3 \\, {\\Lambda} r^{4} - 18 \\, m^{2} + 9 \\, m r}{9 \\, r^{3}} \\\\ \\Gamma_{ \\phantom{\\, r} \\, r \\, r }^{ \\, r \\phantom{\\, r} \\phantom{\\, r} } & = & -\\frac{{\\Lambda} r^{3} - 3 \\, m}{{\\Lambda} r^{4} + 6 \\, m r - 3 \\, r^{2}} \\\\ \\Gamma_{ \\phantom{\\, r} \\, {\\theta} \\, {\\theta} }^{ \\, r \\phantom{\\, {\\theta}} \\phantom{\\, {\\theta}} } & = & \\frac{1}{3} \\, {\\Lambda} r^{3} + 2 \\, m - r \\\\ \\Gamma_{ \\phantom{\\, r} \\, {\\phi} \\, {\\phi} }^{ \\, r \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & \\frac{1}{3} \\, {\\left({\\Lambda} r^{3} + 6 \\, m - 3 \\, r\\right)} \\sin\\left({\\theta}\\right)^{2} \\\\ \\Gamma_{ \\phantom{\\, {\\theta}} \\, r \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, r} \\phantom{\\, {\\theta}} } & = & \\frac{1}{r} \\\\ \\Gamma_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & -\\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right) \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, r \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, r} \\phantom{\\, {\\phi}} } & = & \\frac{1}{r} \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\frac{\\cos\\left({\\theta}\\right)}{\\sin\\left({\\theta}\\right)} \\end{array}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{lcl} \\Gamma_{ \\phantom{\\, t} \\, t \\, r }^{ \\, t \\phantom{\\, t} \\phantom{\\, r} } & = & \\frac{{\\Lambda} r^{3} - 3 \\, m}{{\\Lambda} r^{4} + 6 \\, m r - 3 \\, r^{2}} \\\\ \\Gamma_{ \\phantom{\\, r} \\, t \\, t }^{ \\, r \\phantom{\\, t} \\phantom{\\, t} } & = & \\frac{{\\Lambda}^{2} r^{6} + 3 \\, {\\Lambda} m r^{3} - 3 \\, {\\Lambda} r^{4} - 18 \\, m^{2} + 9 \\, m r}{9 \\, r^{3}} \\\\ \\Gamma_{ \\phantom{\\, r} \\, r \\, r }^{ \\, r \\phantom{\\, r} \\phantom{\\, r} } & = & -\\frac{{\\Lambda} r^{3} - 3 \\, m}{{\\Lambda} r^{4} + 6 \\, m r - 3 \\, r^{2}} \\\\ \\Gamma_{ \\phantom{\\, r} \\, {\\theta} \\, {\\theta} }^{ \\, r \\phantom{\\, {\\theta}} \\phantom{\\, {\\theta}} } & = & \\frac{1}{3} \\, {\\Lambda} r^{3} + 2 \\, m - r \\\\ \\Gamma_{ \\phantom{\\, r} \\, {\\phi} \\, {\\phi} }^{ \\, r \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & \\frac{1}{3} \\, {\\left({\\Lambda} r^{3} + 6 \\, m - 3 \\, r\\right)} \\sin\\left({\\theta}\\right)^{2} \\\\ \\Gamma_{ \\phantom{\\, {\\theta}} \\, r \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, r} \\phantom{\\, {\\theta}} } & = & \\frac{1}{r} \\\\ \\Gamma_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & -\\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right) \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, r \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, r} \\phantom{\\, {\\phi}} } & = & \\frac{1}{r} \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\frac{\\cos\\left({\\theta}\\right)}{\\sin\\left({\\theta}\\right)} \\end{array}$$" ], "text/plain": [ "Gam^t_t,r = (Lamb*r^3 - 3*m)/(Lamb*r^4 + 6*m*r - 3*r^2) \n", "Gam^r_t,t = 1/9*(Lamb^2*r^6 + 3*Lamb*m*r^3 - 3*Lamb*r^4 - 18*m^2 + 9*m*r)/r^3 \n", "Gam^r_r,r = -(Lamb*r^3 - 3*m)/(Lamb*r^4 + 6*m*r - 3*r^2) \n", "Gam^r_th,th = 1/3*Lamb*r^3 + 2*m - r \n", "Gam^r_ph,ph = 1/3*(Lamb*r^3 + 6*m - 3*r)*sin(th)^2 \n", "Gam^th_r,th = 1/r \n", "Gam^th_ph,ph = -cos(th)*sin(th) \n", "Gam^ph_r,ph = 1/r \n", "Gam^ph_th,ph = cos(th)/sin(th) " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.christoffel_symbols_display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us check that the vacuum Einstein equation is satisfied by the above metric:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}E = 0\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}E = 0$$" ], "text/plain": [ "E = 0" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EE = g.ricci() - 1/2*g.ricci_scalar()*g + Lamb*g\n", "EE.set_name('E')\n", "EE.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Ricci scalar is constant for this solution:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{llcl} \\mathrm{r}\\left(g\\right):& M & \\longrightarrow & \\mathbb{R} \\\\ & \\left(t, r, {\\theta}, {\\phi}\\right) & \\longmapsto & 4 \\, {\\Lambda} \\end{array}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{llcl} \\mathrm{r}\\left(g\\right):& M & \\longrightarrow & \\mathbb{R} \\\\ & \\left(t, r, {\\theta}, {\\phi}\\right) & \\longmapsto & 4 \\, {\\Lambda} \\end{array}$$" ], "text/plain": [ "r(g): M → ℝ\n", " (t, r, th, ph) ↦ 4*Lamb" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.ricci_scalar().display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Ricci tensor is proportional to the metric tensor:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{Ric}\\left(g\\right) = \\left( \\frac{{\\Lambda}^{2} r^{3} + 6 \\, {\\Lambda} m - 3 \\, {\\Lambda} r}{3 \\, r} \\right) \\mathrm{d} t\\otimes \\mathrm{d} t + \\left( -\\frac{3 \\, {\\Lambda} r}{{\\Lambda} r^{3} + 6 \\, m - 3 \\, r} \\right) \\mathrm{d} r\\otimes \\mathrm{d} r + {\\Lambda} r^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + {\\Lambda} r^{2} \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{Ric}\\left(g\\right) = \\left( \\frac{{\\Lambda}^{2} r^{3} + 6 \\, {\\Lambda} m - 3 \\, {\\Lambda} r}{3 \\, r} \\right) \\mathrm{d} t\\otimes \\mathrm{d} t + \\left( -\\frac{3 \\, {\\Lambda} r}{{\\Lambda} r^{3} + 6 \\, m - 3 \\, r} \\right) \\mathrm{d} r\\otimes \\mathrm{d} r + {\\Lambda} r^{2} \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + {\\Lambda} r^{2} \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}$$" ], "text/plain": [ "Ric(g) = 1/3*(Lamb^2*r^3 + 6*Lamb*m - 3*Lamb*r)/r dt⊗dt - 3*Lamb*r/(Lamb*r^3 + 6*m - 3*r) dr⊗dr + Lamb*r^2 dth⊗dth + Lamb*r^2*sin(th)^2 dph⊗dph" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.ricci().display()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}\$" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{True}$$" ], "text/plain": [ "True" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.ricci() == Lamb * g" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.5.beta5", "language": "sage", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 1 }