{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Short demo of differentiable manifolds in SageMath" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we set up the notebook to display math with LaTeX:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%display latex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Declaring a manifold" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We introduce a 2-dimensional manifold $S$, aimed to represent the sphere $\\mathbb{S}^2$ (or more precisely the part of $\\mathbb{S}^2$ covered by spherical coordinates):" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2-dimensional differentiable manifold S\n" ] } ], "source": [ "S = Manifold(2, 'S')\n", "print(S)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This manifold is created \"bare\", with no chart in its (user) atlas. This means that the manifold is not fully defined yet:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left[\\right]\\)" ], "text/latex": [ "$\\displaystyle \\left[\\right]$" ], "text/plain": [ "[]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S.atlas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding a coordinate chart" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create the chart of spherical coordinates $(\\theta, \\phi)$ via the method `chart()`, by providing the coordinate ranges and their LaTeX symbols:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "X. = S.chart(r\"th:(0,pi):\\theta ph:(0,2*pi):\\phi\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(S,({\\theta}, {\\phi})\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(S,({\\theta}, {\\phi})\\right)$" ], "text/plain": [ "Chart (S, (th, ph))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thanks to the operator `<,>` the Python variables `th` and `ph` are set to the coordinates $\\theta$ and $\\phi$ respectively, so that they are immediately available to the user:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\cos\\left({\\phi}\\right) \\sin\\left({\\theta}\\right)\\)" ], "text/latex": [ "$\\displaystyle \\cos\\left({\\phi}\\right) \\sin\\left({\\theta}\\right)$" ], "text/plain": [ "cos(ph)*sin(th)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin(th)*cos(ph)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can access each coordinate by its index in the chart `X`:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\mathrm{True}\\)" ], "text/latex": [ "$\\displaystyle \\mathrm{True}$" ], "text/plain": [ "True" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X[0] is th" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The user atlas is no longer empty:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left[\\left(S,({\\theta}, {\\phi})\\right)\\right]\\)" ], "text/latex": [ "$\\displaystyle \\left[\\left(S,({\\theta}, {\\phi})\\right)\\right]$" ], "text/plain": [ "[Chart (S, (th, ph))]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S.atlas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Charts can be plotted: they are rendered as coordinate grids:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 18 graphics primitives" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "graph = X.plot()\n", "graph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Points on manifolds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us introduce a point $p\\in S$, via the *parent/element* syntax of SageMath:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Point p on the 2-dimensional differentiable manifold S\n" ] } ], "source": [ "p = S((pi/2, pi/3), name='p')\n", "print(p)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle S\\)" ], "text/latex": [ "$\\displaystyle S$" ], "text/plain": [ "2-dimensional differentiable manifold S" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.parent()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The coordinates of $p$ with respect to chart $X$ are recovered by letting the chart act on $p$:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(\\frac{1}{2} \\, \\pi, \\frac{1}{3} \\, \\pi\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\frac{1}{2} \\, \\pi, \\frac{1}{3} \\, \\pi\\right)$" ], "text/plain": [ "(1/2*pi, 1/3*pi)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Points can be plotted: let us add $p$ to the plot `graph` previously created" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 20 graphics primitives" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "graph += p.plot()\n", "graph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Embedding of $S$ into the 3-dimensional Euclidean space\n", "\n", "Euclidean spaces are predefined Riemannian manifolds in SageMath. To get the 3-dimensional Euclidean space $\\mathbb{E}^3$, along with its canonical Cartesian coordinates $(x,y,z)$, we simply type:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\mathbb{E}^{3}\\)" ], "text/latex": [ "$\\displaystyle \\mathbb{E}^{3}$" ], "text/plain": [ "Euclidean space E^3" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E. = EuclideanSpace()\n", "E" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Python variables `x`, `y` and `z` are then injected in the global namespace to represent the coordinates $x$, $y$ and $z$ respectively.\n", "\n", "The chart of coordinates $(x,y,z)$ is returned by the method `cartesian_coordinates()`:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(\\mathbb{E}^{3},(x, y, z)\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\mathbb{E}^{3},(x, y, z)\\right)$" ], "text/plain": [ "Chart (E^3, (x, y, z))" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E.cartesian_coordinates()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The embedding $S\\to \\mathbb{E}^3$ is defined by its coordinate expression:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{llcl} & S & \\longrightarrow & \\mathbb{E}^{3} \\\\ & \\left({\\theta}, {\\phi}\\right) & \\longmapsto & \\left(x, y, z\\right) = \\left(\\cos\\left({\\phi}\\right) \\sin\\left({\\theta}\\right), \\sin\\left({\\phi}\\right) \\sin\\left({\\theta}\\right), \\cos\\left({\\theta}\\right)\\right) \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{llcl} & S & \\longrightarrow & \\mathbb{E}^{3} \\\\ & \\left({\\theta}, {\\phi}\\right) & \\longmapsto & \\left(x, y, z\\right) = \\left(\\cos\\left({\\phi}\\right) \\sin\\left({\\theta}\\right), \\sin\\left({\\phi}\\right) \\sin\\left({\\theta}\\right), \\cos\\left({\\theta}\\right)\\right) \\end{array}$" ], "text/plain": [ "S → E^3\n", " (th, ph) ↦ (x, y, z) = (cos(ph)*sin(th), sin(ph)*sin(th), cos(th))" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F = S.diff_map(E, [sin(th)*cos(ph), sin(th)*sin(ph), cos(th)])\n", "F.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The image of the point $p$ by the embedding:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\mbox{Point on the Euclidean space E^3}\\)" ], "text/latex": [ "$\\displaystyle \\mbox{Point on the Euclidean space E^3}$" ], "text/plain": [ "Point on the Euclidean space E^3" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F(p)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(\\frac{1}{2}, \\frac{1}{2} \\, \\sqrt{3}, 0\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(\\frac{1}{2}, \\frac{1}{2} \\, \\sqrt{3}, 0\\right)$" ], "text/plain": [ "(1/2, 1/2*sqrt(3), 0)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E.cartesian_coordinates()(F(p))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We may use $F$ to have a 3D view of the chart of spherical coordinates on $S$:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "Graphics3d Object" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "graph3 = X.plot(E.cartesian_coordinates(), mapping=F, \n", " number_values=9)\n", "graph3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Adding the point $p$ to the plot:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "Graphics3d Object" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "graph3 += p.plot(E.cartesian_coordinates(), mapping=F)\n", "graph3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Vector fields\n", "\n", "The vector frame associated with the spherical coordinates is:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(S, \\left(\\frac{\\partial}{\\partial {\\theta} },\\frac{\\partial}{\\partial {\\phi} }\\right)\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(S, \\left(\\frac{\\partial}{\\partial {\\theta} },\\frac{\\partial}{\\partial {\\phi} }\\right)\\right)$" ], "text/plain": [ "Coordinate frame (S, (∂/∂th,∂/∂ph))" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.frame()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us define a vector field on $S$ from its components in this vector frame (which is, at this stage, the default one on $S$):" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle v = \\frac{1}{2} \\, \\sin\\left({\\theta}\\right) \\frac{\\partial}{\\partial {\\theta} } +\\frac{\\partial}{\\partial {\\phi} }\\)" ], "text/latex": [ "$\\displaystyle v = \\frac{1}{2} \\, \\sin\\left({\\theta}\\right) \\frac{\\partial}{\\partial {\\theta} } +\\frac{\\partial}{\\partial {\\phi} }$" ], "text/plain": [ "v = 1/2*sin(th) ∂/∂th + ∂/∂ph" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v = S.vector_field(name='v')\n", "v[:] = sin(th)/2, 1\n", "v.display()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{lcl} v_{\\phantom{\\, {\\theta}}}^{ \\, {\\theta} } & = & \\frac{1}{2} \\, \\sin\\left({\\theta}\\right) \\\\ v_{\\phantom{\\, {\\phi}}}^{ \\, {\\phi} } & = & 1 \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{lcl} v_{\\phantom{\\, {\\theta}}}^{ \\, {\\theta} } & = & \\frac{1}{2} \\, \\sin\\left({\\theta}\\right) \\\\ v_{\\phantom{\\, {\\phi}}}^{ \\, {\\phi} } & = & 1 \\end{array}$" ], "text/plain": [ "v^th = 1/2*sin(th) \n", "v^ph = 1 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v.display_comp()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 81 graphics primitives" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thanks to the embedding $F: S\\to \\mathbb{E}^3$, we may add the plot of $v$ atop the 3D view of $S$:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "Graphics3d Object" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "graph3 += v.plot(E.cartesian_coordinates(), mapping=F, \n", " number_values=7)\n", "graph3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Value of the vector field $v$ at the point $p$:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tangent vector v at Point p on the 2-dimensional differentiable manifold S\n" ] } ], "source": [ "vp = v.at(p)\n", "print(vp)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle T_{p}\\,S\\)" ], "text/latex": [ "$\\displaystyle T_{p}\\,S$" ], "text/plain": [ "Tangent space at Point p on the 2-dimensional differentiable manifold S" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vp.parent()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle v = \\frac{1}{2} \\frac{\\partial}{\\partial {\\theta} } +\\frac{\\partial}{\\partial {\\phi} }\\)" ], "text/latex": [ "$\\displaystyle v = \\frac{1}{2} \\frac{\\partial}{\\partial {\\theta} } +\\frac{\\partial}{\\partial {\\phi} }$" ], "text/plain": [ "v = 1/2 ∂/∂th + ∂/∂ph" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vp.display()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "Graphics3d Object" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "graph3 += vp.plot(E.cartesian_coordinates(), mapping=F, \n", " color='gold')\n", "graph3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Metric tensor\n", "\n", "The Euclidean space arrives with its default metric:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Riemannian metric g on the Euclidean space E^3\n" ] } ], "source": [ "g = E.metric()\n", "print(g)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle g = \\mathrm{d} x\\otimes \\mathrm{d} x+\\mathrm{d} y\\otimes \\mathrm{d} y+\\mathrm{d} z\\otimes \\mathrm{d} z\\)" ], "text/latex": [ "$\\displaystyle g = \\mathrm{d} x\\otimes \\mathrm{d} x+\\mathrm{d} y\\otimes \\mathrm{d} y+\\mathrm{d} z\\otimes \\mathrm{d} z$" ], "text/plain": [ "g = dx⊗dx + dy⊗dy + dz⊗dz" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is a *flat* metric, i.e. its Riemann curvature tensor vanished identically:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\mathrm{Riem}\\left(g\\right) = 0\\)" ], "text/latex": [ "$\\displaystyle \\mathrm{Riem}\\left(g\\right) = 0$" ], "text/plain": [ "Riem(g) = 0" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.riemann().display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us define the metric on $S$ as being the metric induced by the Euclidean metric $g$, i.e. the pullback of $g$ by the embedding $F$:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "h = S.metric(name='h')\n", "h.set(F.pullback(g))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result of the pullback computation:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle h = \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\\)" ], "text/latex": [ "$\\displaystyle h = \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}$" ], "text/plain": [ "h = dth⊗dth + sin(th)^2 dph⊗dph" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The scalar square of the vector field $v$ with respect to the metric $h$:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Scalar field h(v,v) on the 2-dimensional differentiable manifold S\n" ] } ], "source": [ "print(h(v,v))" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{llcl} h\\left(v,v\\right):& S & \\longrightarrow & \\mathbb{R} \\\\ & \\left({\\theta}, {\\phi}\\right) & \\longmapsto & \\frac{5}{4} \\, \\sin\\left({\\theta}\\right)^{2} \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{llcl} h\\left(v,v\\right):& S & \\longrightarrow & \\mathbb{R} \\\\ & \\left({\\theta}, {\\phi}\\right) & \\longmapsto & \\frac{5}{4} \\, \\sin\\left({\\theta}\\right)^{2} \\end{array}$" ], "text/plain": [ "h(v,v): S → ℝ\n", " (th, ph) ↦ 5/4*sin(th)^2" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h(v,v).display()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\frac{5}{4} \\, \\sin\\left({\\theta}\\right)^{2}\\)" ], "text/latex": [ "$\\displaystyle \\frac{5}{4} \\, \\sin\\left({\\theta}\\right)^{2}$" ], "text/plain": [ "5/4*sin(th)^2" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h(v,v).expr()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The nonzero (and noredundant) Christoffel symbols of $h$ with respect to spherical coordinates:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{lcl} \\Gamma_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & -\\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right) \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\frac{\\cos\\left({\\theta}\\right)}{\\sin\\left({\\theta}\\right)} \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{lcl} \\Gamma_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} } & = & -\\cos\\left({\\theta}\\right) \\sin\\left({\\theta}\\right) \\\\ \\Gamma_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\frac{\\cos\\left({\\theta}\\right)}{\\sin\\left({\\theta}\\right)} \\end{array}$" ], "text/plain": [ "Gam^th_ph,ph = -cos(th)*sin(th) \n", "Gam^ph_th,ph = cos(th)/sin(th) " ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.christoffel_symbols_display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Contrary to $g$, $h$ is not a flat metric:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\mathrm{Riem}\\left(h\\right) = \\sin\\left({\\theta}\\right)^{2} \\frac{\\partial}{\\partial {\\theta} }\\otimes \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\phi} -\\sin\\left({\\theta}\\right)^{2} \\frac{\\partial}{\\partial {\\theta} }\\otimes \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\theta} -\\frac{\\partial}{\\partial {\\phi} }\\otimes \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\phi} +\\frac{\\partial}{\\partial {\\phi} }\\otimes \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\theta}\\)" ], "text/latex": [ "$\\displaystyle \\mathrm{Riem}\\left(h\\right) = \\sin\\left({\\theta}\\right)^{2} \\frac{\\partial}{\\partial {\\theta} }\\otimes \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\phi} -\\sin\\left({\\theta}\\right)^{2} \\frac{\\partial}{\\partial {\\theta} }\\otimes \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\theta} -\\frac{\\partial}{\\partial {\\phi} }\\otimes \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\phi} +\\frac{\\partial}{\\partial {\\phi} }\\otimes \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\theta}$" ], "text/plain": [ "Riem(h) = sin(th)^2 ∂/∂th⊗dph⊗dth⊗dph - sin(th)^2 ∂/∂th⊗dph⊗dph⊗dth - ∂/∂ph⊗dth⊗dth⊗dph + ∂/∂ph⊗dth⊗dph⊗dth" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.riemann().display()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{lcl} \\mathrm{Riem}\\left(h\\right)_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\theta} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\sin\\left({\\theta}\\right)^{2} \\\\ \\mathrm{Riem}\\left(h\\right)_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\phi} \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} \\phantom{\\, {\\theta}} } & = & -\\sin\\left({\\theta}\\right)^{2} \\\\ \\mathrm{Riem}\\left(h\\right)_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & -1 \\\\ \\mathrm{Riem}\\left(h\\right)_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\phi} \\, {\\theta} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} \\phantom{\\, {\\theta}} } & = & 1 \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{lcl} \\mathrm{Riem}\\left(h\\right)_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\theta} \\, {\\phi} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & \\sin\\left({\\theta}\\right)^{2} \\\\ \\mathrm{Riem}\\left(h\\right)_{ \\phantom{\\, {\\theta}} \\, {\\phi} \\, {\\phi} \\, {\\theta} }^{ \\, {\\theta} \\phantom{\\, {\\phi}} \\phantom{\\, {\\phi}} \\phantom{\\, {\\theta}} } & = & -\\sin\\left({\\theta}\\right)^{2} \\\\ \\mathrm{Riem}\\left(h\\right)_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\theta} \\, {\\phi} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} } & = & -1 \\\\ \\mathrm{Riem}\\left(h\\right)_{ \\phantom{\\, {\\phi}} \\, {\\theta} \\, {\\phi} \\, {\\theta} }^{ \\, {\\phi} \\phantom{\\, {\\theta}} \\phantom{\\, {\\phi}} \\phantom{\\, {\\theta}} } & = & 1 \\end{array}$" ], "text/plain": [ "Riem(h)^th_ph,th,ph = sin(th)^2 \n", "Riem(h)^th_ph,ph,th = -sin(th)^2 \n", "Riem(h)^ph_th,th,ph = -1 \n", "Riem(h)^ph_th,ph,th = 1 " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.riemann().display_comp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Ricci tensor of $h$:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\mathrm{Ric}\\left(h\\right) = \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}\\)" ], "text/latex": [ "$\\displaystyle \\mathrm{Ric}\\left(h\\right) = \\mathrm{d} {\\theta}\\otimes \\mathrm{d} {\\theta} + \\sin\\left({\\theta}\\right)^{2} \\mathrm{d} {\\phi}\\otimes \\mathrm{d} {\\phi}$" ], "text/plain": [ "Ric(h) = dth⊗dth + sin(th)^2 dph⊗dph" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.ricci().display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$(S, h)$ is a manifold of constant positive curvature:" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{llcl} \\mathrm{r}\\left(h\\right):& S & \\longrightarrow & \\mathbb{R} \\\\ & \\left({\\theta}, {\\phi}\\right) & \\longmapsto & 2 \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{llcl} \\mathrm{r}\\left(h\\right):& S & \\longrightarrow & \\mathbb{R} \\\\ & \\left({\\theta}, {\\phi}\\right) & \\longmapsto & 2 \\end{array}$" ], "text/plain": [ "r(h): S → ℝ\n", " (th, ph) ↦ 2" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.ricci_scalar().display()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Going further\n", "\n", "See \n", "- these [manifold examples](https://sagemanifolds.obspm.fr/examples.html), in particular for multiple charts and their transition maps\n", "- the [elementary vector calculus examples](https://sagemanifolds.obspm.fr/vector_calculus.html). \n", "\n", "If interested in extending the differential geometry part of SageMath, you are welcome to join the [SageManifolds project](https://sagemanifolds.obspm.fr/) developed by these [people](https://sagemanifolds.obspm.fr/authors.html).\n" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.6.beta4", "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": 4 }