{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 19. Lie derivative\n", "\n", "This notebook is part of the [Introduction to manifolds in SageMath](https://sagemanifolds.obspm.fr/intro_to_manifolds.html) by Andrzej Chrzeszczyk (Jan Kochanowski University of Kielce, Poland)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'SageMath version 9.6, Release Date: 2022-05-15'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "version()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lie derivative of functions\n", "\n", "
\n", "\n", "If $ϕ$ is a one-parameter group of transformations on $M$ ([notebook 17](https://nbviewer.org/github/sagemanifolds/IntroToManifolds/blob/main/17Manifold_One_Parameter.ipynb)), then the map $ϕ_t : M →\n", "M$, defined by $ϕ_t (x) = ϕ(x, t)$, is smooth and therefore for \n", "$f ∈ C^∞ (M),\\ \\ $\n", "$ϕ_t^*f = f\\circ \\phi_t\\ $\n", " also belongs to $C^∞ (M)$. \n", " \n", "If $X$ is the infinitesimal generator of $ϕ$ ([notebook 17](https://nbviewer.org/github/sagemanifolds/IntroToManifolds/blob/main/17Manifold_One_Parameter.ipynb)), \n", "then the **Lie derivative of $f$ with respect to $X$** is defined by\n", "\n", "\\begin{equation}\n", "\\mathcal{L}_Xf=\\lim_{t\\to 0}\\frac{\\phi_t^*f-f}{t}\n", "=\\frac{d}{dt}(\\phi_t^*f)\\Big|_{t=0}.\n", "\\tag{19.1}\n", "\\end{equation}\n", "\n", "\n", "
\n", "\n", "**Example 19.1**\n", "\n", "Compute $\\ \\ \\mathcal{L}_Xf\\ \\ $ for $ f(x)=x^2\\cos y \\ \\ $ and \n", "$\\ \\ X=-y\\frac{\\partial}{\\partial x}+x\\frac{\\partial}{\\partial y},$ using SageMath Manifolds." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle -x^{3} \\sin\\left(y\\right) - 2 \\, x y \\cos\\left(y\\right)\\)" ], "text/latex": [ "$\\displaystyle -x^{3} \\sin\\left(y\\right) - 2 \\, x y \\cos\\left(y\\right)$" ], "text/plain": [ "-x^3*sin(y) - 2*x*y*cos(y)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%display latex\n", "M = Manifold(2, 'M') # manifold M\n", "c_xy. = M.chart() # chart on M\n", "f = M.scalar_field(x^2*cos(y)) # scalar function f on M\n", "X = M.vector_field(name='X') # vector field X on M\n", "X[:] = (-y, x) # components of X\n", "f.lie_derivative(X).expr() # Lie derivative L_X(f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Lie derivative of $f$ with respect to $X$ is the value of $\\ Xf$\n", "\n", "
\n", "\n", "Since the curve $ϕ_x$ given by $ϕ_x (t) = ϕ(x, t)$ is\n", "the integral curve of $X$ that starts at $x$ we have\n", "\n", "$$\\lim_{t\\to 0}\\frac{\\phi_t^*f-f}{t}(x)=\n", "\\lim_{t\\to 0}\\frac{f(\\phi_t(x))-f(x)}{t}\n", "=\\lim_{t\\to 0}\\frac{f(\\phi(x,t))-f(x)}{t}$$\n", "\n", "$$=\\lim_{t\\to 0}\\frac{f(\\phi_x(t))-f(\\phi_x(0))}{t}\\\\\n", "=(ϕ_x)'_0 ( f ) = X_x ( f )=(Xf)(x).\n", "$$\n", "We have checked that\n", "\\begin{equation}\n", "\\mathcal{L}_Xf=Xf.\n", "\\tag{19.2}\n", "\\end{equation}\n", "\n", "Thus **we can compute $\\ \\ \\mathcal{L}_Xf\\ \\ $ without any knowledge on the integral curves of $X$**.\n", "\n", "\n", "
\n", "\n", "**Example 19.2**\n", "\n", "Check the result of the previous example using (19.2).\n", "\n", "
\n", "\n", "We have\n", "\n", "$$\\ \\ X(f)=(-y\\frac{\\partial}{\\partial x}+x\\frac{\\partial}{\\partial y})(x^2\\cos y )\\ \\ \n", "=-y(2x)\\cos y +x(x^2)(-\\sin y)\\\\=-x^3\\sin y-2xy\\cos y.$$\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle -x^{3} \\sin\\left(y\\right) - 2 \\, x y \\cos\\left(y\\right)\\)" ], "text/latex": [ "$\\displaystyle -x^{3} \\sin\\left(y\\right) - 2 \\, x y \\cos\\left(y\\right)$" ], "text/plain": [ "-x^3*sin(y) - 2*x*y*cos(y)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# continuation\n", "X(f).expr() # value of the vector field X on f" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.3**\n", "\n", "Check that SageMath `lie_derivative` method applied to functions coincides with application of (19.2)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle X = X^0\\left({x^{0}}, {x^{1}}\\right) \\frac{\\partial}{\\partial {x^{0}} } + X^1\\left({x^{0}}, {x^{1}}\\right) \\frac{\\partial}{\\partial {x^{1}} }\\)" ], "text/latex": [ "$\\displaystyle X = X^0\\left({x^{0}}, {x^{1}}\\right) \\frac{\\partial}{\\partial {x^{0}} } + X^1\\left({x^{0}}, {x^{1}}\\right) \\frac{\\partial}{\\partial {x^{1}} }$" ], "text/plain": [ "X = X0(x0, x1) ∂/∂x0 + X1(x0, x1) ∂/∂x1" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%display latex\n", "N = 2 # dimension of manifold M\n", "M = Manifold(N, 'M') # manifold M \n", "c_x = M.chart(' '.join(['x'+str(i)+':x^{'+str(i)+'}' for i in range(N)])) # chart on M\n", "x0, x1 = c_x[:] # coordinates x^0, x^1 of chart c_x as the Python variables x0, x1\n", "X = M.vector_field(name='X') # vector field X\n", "Xf=[M.scalar_field(function('X'+str(i), # list of components\n", " latex_name='X'+'^'+str(i))(x0, x1))\n", " for i in range(N)]\n", "X[:] = Xf # define all components of X\n", "X.disp()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{0}}, {x^{1}}\\right) & \\longmapsto & f\\left({x^{0}}, {x^{1}}\\right) \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{0}}, {x^{1}}\\right) & \\longmapsto & f\\left({x^{0}}, {x^{1}}\\right) \\end{array}$" ], "text/plain": [ "M → ℝ\n", "(x0, x1) ↦ f(x0, x1)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = M.scalar_field(function('f')(x0, x1)) # scalar function on M\n", "f.disp()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle X^0\\left({x^{0}}, {x^{1}}\\right) \\frac{\\partial}{\\partial {x^{0}}}f\\left({x^{0}}, {x^{1}}\\right) + X^1\\left({x^{0}}, {x^{1}}\\right) \\frac{\\partial}{\\partial {x^{1}}}f\\left({x^{0}}, {x^{1}}\\right)\\)" ], "text/latex": [ "$\\displaystyle X^0\\left({x^{0}}, {x^{1}}\\right) \\frac{\\partial}{\\partial {x^{0}}}f\\left({x^{0}}, {x^{1}}\\right) + X^1\\left({x^{0}}, {x^{1}}\\right) \\frac{\\partial}{\\partial {x^{1}}}f\\left({x^{0}}, {x^{1}}\\right)$" ], "text/plain": [ "X0(x0, x1)*diff(f(x0, x1), x0) + X1(x0, x1)*diff(f(x0, x1), x1)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.lie_derivative(X).expr() # Lie derivative of f w.r.t. X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Commutator of Lie derivatives of functions\n", "\n", "
\n", "\n", "From (19.2) it follows\n", "$$\\mathcal{L}_X (\\mathcal{L}_Y f ) − \\mathcal{L}_Y (\\mathcal{L}_X f ) = XY f − YX f = [X, Y] f = \\mathcal{L}_{[X,Y]} f,\n", "$$\n", "i.e.\n", "\\begin{equation}\n", "\\mathcal{L}_X (\\mathcal{L}_Y f ) − \\mathcal{L}_Y (\\mathcal{L}_X f )=\n", "\\mathcal{L}_{[X,Y]} f.\n", "\\tag{19.3}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.4**\n", "\n", "Check in SageMath Manifolds that (19.3) holds for 2-dimensional manifolds." ] }, { "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": [ "# continuation\n", "Y = M.vector_field(name='Y') # vector field Y\n", "Yf = [M.scalar_field(function('Y'+str(i), # list of components\n", " latex_name='Y'+'^'+str(i))(x0, x1)) \n", " for i in range(N)]\n", "Y[:] = Yf # define all components\n", "L_XL_Yf = (f.lie_derivative(Y)).lie_derivative(X) # L_X(L_Y(f))\n", "L_YL_Xf = (f.lie_derivative(X)).lie_derivative(Y) # L_Y(L_X(f))\n", "L_bracket_f = f.lie_derivative(X.bracket(Y)) # L_{lie_brack(X,Y)}(f)\n", "L_XL_Yf - L_YL_Xf == L_bracket_f # check (19.3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### $\\psi$-related vector fields\n", "\n", "
\n", "\n", "Let $ψ : M → N$ be a smooth map between two smooth manifolds. If\n", "$X ∈ \\mathfrak{X}(M)$ and $Y ∈ \\mathfrak{X}(N ).$ \n", "\n", "$X$ and $Y$ are $ψ$-**related** if\n", "\\begin{equation}\n", "Y_{ψ(p)} = dψ_pX_p ,\n", "\\tag{19.4}\n", "\\end{equation}\n", "for $p ∈ M.$\n", " \n", "If $f ∈ C^∞ (N )$, then from (19.4) and (8.8) it follows\n", "\n", "$$\n", "(Y f ) (ψ( p)) = Y_{ψ( p)} ( f ) = dψ_p X_p ( f ) = X_p ( f ◦ ψ)\n", "= (X( f ◦ ψ) )( p),$$\n", "for $p ∈ M,$ i.e.,\n", "\\begin{equation}\n", "(Y f ) ◦ ψ = X( f ◦ ψ),\n", "\\tag{19.5}\n", "\\end{equation}
\n", "for $f ∈ C^∞ (N).$\n", "An equivalent formulation is\n", "\n", "\\begin{equation}\n", "\\psi^*(Y f ) = X( \\psi^*f),\n", "\\tag{19.6}\n", "\\end{equation}\n", "for $f ∈ C^∞ (N).$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Pullback of a vector field and its properties\n", "\n", "
\n", "\n", "\n", "Let $M$ and $N$ be smooth manifolds, $ψ : M → N$ be a **diffeomorphism** and $X$ be a vector field on $N$. The **pullback of $X$ under** $\\psi$ is the vector field on $M$ defined by\n", "\n", "\\begin{equation}\n", "(\\psi^∗ X)_x = d(ψ^{-1 })_{ψ(x)} X_{ ψ(x)}.\n", "\\tag{19.7}\n", "\\end{equation}\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "Note that (19.7) implies that \n", "\n", "\\begin{equation}\n", "X_{\\psi(x)}=d\\psi_x(\\psi^*X)_x,\n", "\\tag{19.7'}\n", "\\end{equation}\n", "\n", "which means that \n", "$ψ^∗ X$ and $X$ are $ψ$-related. If we replace in\n", "(19.6) $Y$ by $X$ and $X$ by $\\psi^*X$ we obtain\n", "\n", "\\begin{equation}\n", "\\psi^*(X f ) = (\\psi^*X)( \\psi^*f),\n", "\\tag{19.8}\n", "\\end{equation}\n", "for $f ∈ C^∞ (N ).$\n", "\n", "We have also\n", "$$ψ^∗ ( f X) = (ψ^∗ f )(ψ^∗ X),$$\n", "\n", "$$ψ^∗ (aX + bY) = aψ^∗X + bψ^∗ Y,$$ \n", "\n", "for $X, Y ∈ \\mathfrak{X}(N ), f ∈ C^∞ (N ),$ and $a, b ∈ R.$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In fact by (19.7)\n", "\n", "$$ [ψ^∗( f X)]_x = d(ψ^{−1} )_{ψ(x)} ( f X)_{ψ(x)} \n", "= d(ψ^{−1} )_{ψ(x)} (f (ψ(x)) X_{ψ(x)})\\\\\n", "= f (ψ(x)) d(ψ^{−1} )_{ψ(x)} X_{ψ(x)} = (ψ^∗ f )(x) (ψ^∗ X)_x =\n", "[(ψ^∗ f )(ψ^∗ X)]_x,\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and\n", "\n", "$$\n", "[ψ^∗ (aX + bY)]_x = d(ψ^{−1})_{ψ(x)} (aX + bY)_{ψ(x)} \n", "= d(ψ^{−1} )_{ψ(x)} (aX_{ψ(x)} + bY_{ψ(x)} )\n", "= ad(ψ^{ −1} )_{ψ(x)} X_{ψ(x)} + bd(ψ^{−1} )_{ψ(x)} Y_{ψ(x)}\n", "= [aψ^∗ X + bψ^∗ Y]_x.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "If $ψ : M → N$ is a **diffeomorphism** of smooth manifolds $M$, $N$ and $χ$ is a one-parameter group of transformations on $N$ whose infinitesimal generator is $Y$,\n", "then $ϕ_t = ψ^{−1} ◦ χ_t ◦ ψ$ **is a one-parameter group of transformations on $M$ whose\n", "infinitesimal generator is** $ψ^∗ Y$.\n", "\n", "This relation follows from\n", "\n", "$$ϕ_s ◦ϕ_t = (ψ^{−1} ◦ χ_s ◦ ψ) ◦ (ψ^{−1} ◦ χ_t ◦ ψ) \\\\\n", "= ψ^{−1} ◦ χ_s ◦ χ_t ◦ ψ =\n", "ψ^{−1} ◦ χ_{s+t} ◦ ψ = ϕ_{s+t} .$$\n", "\n", "\n", "
\n", "\n", "If $ψ_1 : M_1 → M_2$ and $ψ_2 : M_2 → M_3$ are diffeomorphisms, then $$(ψ_2 ◦ ψ_1 )^∗ X = (ψ_1^∗ ◦ ψ_2^∗ )X,$$ for $X ∈ \\mathfrak{X}(M_3 )$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last equality is true, since\n", "\n", "$$\n", "[(ψ_2 ◦ ψ_1 )^∗ X]_x = d((ψ_2 ◦ ψ_1 )^{−1})\n", "_{ (ψ_2 ◦ψ_1 )(x)}X_{( ψ_2 \\circ ψ_1 )(x)}\\\\\n", "= (d(ψ_1^{−1})_{ψ_1 (x)}\\circ d(ψ_2^{-1})_{\\psi_2(\\psi_1(x))})\n", "X_{\\psi_2(ψ_1 (x))}\\\\\n", "=d(\\psi_1^{-1})_{\\psi_1(x)}(\\psi_2^*X)_{\\psi_1(x)}\n", "= [ψ_1^∗ (ψ_2^∗ X)]_x .\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Lie derivative of a vector field\n", "\n", "
\n", "\n", "If $ϕ$ is a one-parameter group of transformations on a manifold $M$ and $X$ its infinitesimal generator, then for any vector field $Y$ on $M$, the Lie derivative of $Y$ with respect to $X$ is defined by \n", "\\begin{equation}\n", "(\\mathcal{L}_XY)_x=\\lim_{t→0}\\frac{(\\phi^*_tY)_x-Y_x}{t}\n", "=\\frac{d}{dt}(\\phi_t^*Y)_x\\Big|_{t=0}.\n", "\\tag{9.11}\n", "\\end{equation}\n", "\n", "\n", "
\n", "\n", "### Lie derivatives of vector fields are equal to Lie brackets \n", "\n", "
\n", "\n", "If $X, Y ∈ \\mathfrak{X}(M)$, then \n", "\\begin{equation}\n", "\\mathcal{L}_XY=[X,Y].\n", "\\tag{19.12}\n", "\\end{equation}\n", "\n", "To prove this formula, we will check first a form of Leibniz rule.\n", "If $ \\phi$ is a one-parameter group of transformations on $M$ whose infinitesimal generator is $X$, then\n", "\n", "$$\\mathcal{L}_X(Yf)\n", "=\\lim_{t→0}\\frac{\\phi^*_t(Yf)-Yf}{t}\n", "=\\lim_{t→0}\\frac{(\\phi^*_tY)(\\phi_t^*f)-Yf}{t}$$\n", "$$=\\lim_{t→0}\\Big[(\\phi^*_tY)\\frac{\\phi^*_tf-f}{t}\n", "+\\frac{\\phi^*_tY-Y}{t}f\\Big]=Y(\\mathcal{L}_Xf)+(\\mathcal{L}_XY)f.\n", "$$\n", "\n", "Notice that $(\\phi^*_tY)_x=d(\\phi_t^{-1})_{\\phi_t(x)}Y_{\\phi_t(x)}=\n", "d(\\phi_{-t})_{\\phi_t(x)}Y_{\\phi_t(x)}$. We have also\n", "$\\phi_t(x)\\to x, \\ \\phi_{-t}(x)\\to x$ as $t\\to 0$ and in local coordinates the components of the matrix of the differential \n", "$d(ϕ_{−t} )_{\\phi_t(x)} : T_{ϕ_t(x)} M → T_x M$\n", "are $\\displaystyle \\frac{∂ϕ^i(−t, ϕ(t, x))}{∂x^j}.$\n", "Smoothness of $X$ implies smoothness of $\\phi$, which implies that \n", "\n", "$$\\displaystyle \\frac{∂ϕ^i(−t, ϕ(t, x))}{∂x^j}\\to \\frac{\\partial\\phi^i(0,x)}{\\partial x^j}=\\frac{\\partial x^i}{\\partial x^j}=\\delta^i_j\\quad\\text {as}\\ t\\to 0.$$\n", "Consequently, if $Y = Y^j \\frac{\\partial}{∂ x^j}$, then\n", "$$d(ϕ_{−t} )_{\\phi_t(x)}Y_{ϕ_t (x)} =\n", "\\frac{∂ϕ^i (−t, ϕ(t, x))}{ ∂ x^j}Y^j(ϕ(t, x))\\frac{∂}{∂x^i}\\Big|_{x}\\to Y_x\\quad \\mbox{as } t\\to 0.\n", "$$\n", "\n", "Since by (19.2) $\\mathcal{L}_Xf=Xf,\\ $ we have\n", "\n", "$$X(Yf)=\\mathcal{L}_X(Yf)=Y(Xf)+(\\mathcal{L}_XY)f,$$\n", "so\n", "$$\\mathcal{L}_X(Yf)= X(Yf)-Y(Xf)=[X,Y]f,$$\n", "i.e., (19.12) holds true.\n", "\n", "Thus **we can compute $\\ \\ \\mathcal{L}_XY\\ \\ $ without any knowledge on the integral curves of $X$**.\n", "\n", "\n", "
\n", "\n", "**Example 19.5**\n", "\n", "Compute $\\ \\ \\mathcal{L}_XY\\ \\ $ for $\\ \\ X=-y\\frac{\\partial}{\\partial x}+x\\frac{\\partial}{\\partial y}\\ \\ $\n", "and\n", "$\\ \\ Y=(1-x)\\frac{\\partial}{\\partial x}+(x-y)\\frac{\\partial}{\\partial y}.$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "%display latex\n", "M = Manifold(2, 'M') # manifold M\n", "c_xy. = M.chart() # chart on M\n", "X = M.vector_field(-y, x, name='X') # vector field X\n", "Y = M.vector_field(1-x, x-y, name='Y') # vector field Y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we use the `lie_derivative` method:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle x \\frac{\\partial}{\\partial x } + \\left( -y - 1 \\right) \\frac{\\partial}{\\partial y }\\)" ], "text/latex": [ "$\\displaystyle x \\frac{\\partial}{\\partial x } + \\left( -y - 1 \\right) \\frac{\\partial}{\\partial y }$" ], "text/plain": [ "x ∂/∂x + (-y - 1) ∂/∂y" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_X = Y.lie_derivative(X) # Lie derivative L_X(Y)\n", "Y_X.disp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and next the Lie bracket for comparison:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left[X,Y\\right] = x \\frac{\\partial}{\\partial x } + \\left( -y - 1 \\right) \\frac{\\partial}{\\partial y }\\)" ], "text/latex": [ "$\\displaystyle \\left[X,Y\\right] = x \\frac{\\partial}{\\partial x } + \\left( -y - 1 \\right) \\frac{\\partial}{\\partial y }$" ], "text/plain": [ "[X,Y] = x ∂/∂x + (-y - 1) ∂/∂y" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.bracket(Y).disp() # [X,Y]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.6**\n", "\n", "Use SageMath to check that (19.12) holds for 2-dimensional manifolds." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\mathrm{True}\\)" ], "text/latex": [ "$\\displaystyle \\mathrm{True}$" ], "text/plain": [ "True" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%display latex\n", "\n", "N = 2 # dimension of manifold M\n", "M = Manifold(N, 'M') # manifold M \n", "c_x = M.chart(' '.join(['x'+str(i)+':x^{'+str(i)+'}' for i in range(N)])) # chart on M\n", "x0, x1 = c_x[:] # coordinates x^0, x^1 of chart c_x as the Python variables x0, x1\n", "X = M.vector_field(name='X') # vector field X\n", "Xf = [M.scalar_field(function('X'+str(i), # list of components\n", " latex_name='X'+'^'+str(i))(x0,x1)) \n", " for i in range(N)]\n", "X[:] = Xf # define all components of X\n", "Y = M.vector_field(name='Y') # vector field Y\n", "Yf = [M.scalar_field(function('Y'+str(i), # list of components\n", " latex_name='Y'+'^'+str(i))(x0,x1)) \n", " for i in range(N)]\n", "Y[:] = Yf # define all components of Y\n", "Y.lie_derivative(X) == X.bracket(Y) # check (19.12)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Basic properties of Lie derivative of vector fields\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using properties of the Lie bracket from [notebook 12](https://nbviewer.org/github/sagemanifolds/IntroToManifolds/blob/main/12Manifold_VectorFields_cont.ipynb), one can check that if $X, Y ∈ \\mathfrak{X}(M)$ and $f ∈ C^∞ (M),$ then\n", "\n", "$$\\mathcal{L}_X(fY)=[X, f Y] = f [X, Y] + (X f )Y = f \\mathcal{L}_X Y + (\\mathcal{L}_X f )Y,$$\n", "and\n", "$$\\mathcal{L}_X (Y + Z) = [X, Y + Z] = [X, Y] + [X, Z] = \\mathcal{L}_X Y + \\mathcal{L}_X Z.$$\n", "\n", "If $X, Y, Z \\in \\mathfrak{X}(M)$, then using Jacobi identity ([notebook 12](https://nbviewer.org/github/sagemanifolds/IntroToManifolds/blob/main/12Manifold_VectorFields_cont.ipynb)) we obtain\n", "\n", "$$\\mathcal{L}_X (\\mathcal{L}_Y Z) − \\mathcal{L}_Y (\\mathcal{L}_X Z) = [X, [Y, Z]] − [Y, [X, Z]] = \n", "[X, [Y, Z]] + [Y, [Z, X]]\\\\\n", "= −[Z, [X, Y]]= [[X, Y], Z] =\\mathcal{L}_{[X,Y]} Z.$$\n", "\n", "
\n", "\n", "**Example 19.7**\n", "\n", "For $\\ X,Y$ from example 19.5 and \n", "$\\ Z=y\\frac{\\partial}{\\partial x}+x\\frac{\\partial}{\\partial y}\\ \\ $ compute \n", "$\\mathcal{L}_X (\\mathcal{L}_Y Z) − \\mathcal{L}_Y (\\mathcal{L}_X Z)\\ \\ $ and $ \\mathcal{L}_{[X,Y]} Z.$" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left( -2 \\, y - 1 \\right) \\frac{\\partial}{\\partial x } + 2 \\, x \\frac{\\partial}{\\partial y }\\)" ], "text/latex": [ "$\\displaystyle \\left( -2 \\, y - 1 \\right) \\frac{\\partial}{\\partial x } + 2 \\, x \\frac{\\partial}{\\partial y }$" ], "text/plain": [ "(-2*y - 1) ∂/∂x + 2*x ∂/∂y" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%display latex\n", "M = Manifold(2, 'M') # manifold M\n", "c_xy. = M.chart() # chart on M\n", "X = M.vector_field(-y, x, name='X') # vector field X\n", "Y = M.vector_field(1-x, x-y, name='Y') # vector field Y\n", "Z = M.vector_field(y, x, name='Z') # vector field Z\n", "Z_YX = (Z.lie_derivative(Y)).lie_derivative(X) # L_X(L_Y(Z))\n", "Z_XY = (Z.lie_derivative(X)).lie_derivative(Y) # L_Y(L_X(Z))\n", "(Z_YX - Z_XY).disp() # L_X(L_Y(Z)) - L_Y(L_X(Z))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left( -2 \\, y - 1 \\right) \\frac{\\partial}{\\partial x } + 2 \\, x \\frac{\\partial}{\\partial y }\\)" ], "text/latex": [ "$\\displaystyle \\left( -2 \\, y - 1 \\right) \\frac{\\partial}{\\partial x } + 2 \\, x \\frac{\\partial}{\\partial y }$" ], "text/plain": [ "(-2*y - 1) ∂/∂x + 2*x ∂/∂y" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Z_brXY = Z.lie_derivative(X.bracket(Y)) # L_[X,Y](Z)\n", "Z_brXY.disp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Some properties of pullback of covariant tensor fields\n", "\n", "
\n", "\n", "Let us recall (from [notebook 15](https://nbviewer.org/github/sagemanifolds/IntroToManifolds/blob/main/15Manifold_Pullback.ipynb)) that if $M$ and $N$ are smooth manifolds and $ψ : M → N$ is a smooth map then the pullback $\\ \\psi^*t\\ $of a smooth tensor field $t\\in T^{(0,k)}N$ is defined by\n", "\n", "\\begin{equation}\n", "(ψ^∗ t)_p (X_{1p} , . . . , X_{kp} ) = t_{ψ( p)} (dψ_p X_{1p} , . . . , dψ_p X_{kp} ),\n", "\\tag{19.13}\n", "\\end{equation}\n", "\n", "for $X_{1p},\\ldots,X_{kp}\\in T_pM$ and $p\\in M$.\n", "\n", "\n", "In (15.2) we have proved that for $f ∈ C^∞ (N )$\n", "\\begin{equation}\n", "ψ^∗ d f=d(\\psi^*f),\n", "\\tag{9.14}\n", "\\end{equation}\n", "\n", "and in (15.3)-(15.5) we justified the relations (for covariant tensor fields $t,s$ and $f\\in C^\\infty(M),\\ a,b\\in R$)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\\begin{equation}\n", "\\begin{matrix}\n", "ψ^∗ (at + bs) = aψ^∗ t + bψ^∗ s,\\\\\n", "ψ^∗ ( f t) = (ψ^* f )(ψ^* t),\n", "\\end{matrix}\n", "\\tag{19.15}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\\begin{equation}\n", "ψ^∗ (t ⊗ s) = (ψ^∗ t) ⊗ (ψ^∗ s).\n", "\\tag{19.16}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In [notebook 15](https://nbviewer.org/github/sagemanifolds/IntroToManifolds/blob/main/15Manifold_Pullback.ipynb) we also have checked that if $M_1,M_2,M_3\\ $ are smooth manifolds and $ψ_1 : M_1 → M_2$ and $ψ_2 : M_2 → M_3$ are smooth maps, then\n", "\\begin{equation}\n", "(ψ_2 ◦ ψ_1 )^∗ t = (ψ_1^∗ ◦ ψ_2^∗ )\\,t.\n", "\\tag{19.17}\n", "\\end{equation}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Lie derivative of covariant tensor fields\n", "\n", "
\n", "\n", "If $ϕ$ is a one-parameter group of transformations on $M$ and $X$ its infinitesimal generator, then for any tensor field $t\\in T^{(0,k)}M$ the Lie derivative of $t$ with respect to $X$ is defined by \n", "\\begin{equation}\n", "(\\mathcal{L}_Xt)_x=\\lim_{h→0}\\frac{(\\phi^*_ht)_x-t_x}{h}\n", "=\\frac{d}{dt}(\\phi_t^*t)_x\\Big|_{t=0}.\n", "\\tag{9.18}\n", "\\end{equation}\n", "\n", "
\n", "\n", "For $t\\in T^{(0,k)}M,\\ s\\in T^{(0,m)}M$ we have\n", "\n", "\\begin{equation}\n", "\\begin{matrix}\n", "\\displaystyle\n", "\\mathcal{L}_X(t\\otimes s)\n", "=\\lim_{h→0}\\frac{\\phi^*_h(t\\otimes s)-t\\otimes s}{h}\n", "=\\lim_{h→0}\\frac{(\\phi^*_ht)\\otimes (\\phi_h^*s)-t\\otimes s}{h}\\\\\n", "\\displaystyle\n", "=\\lim_{h→0}\\Big[(\\phi^*_ht)\\otimes\\frac{\\phi^*_hs-s}{h}\n", "+\\frac{\\phi^*_ht-t}{h}\\otimes s\\Big]\\\\\n", "\\displaystyle\n", "=t\\otimes(\\mathcal{L}_X s)+(\\mathcal{L}_Xt)\\otimes s.\n", "\\end{matrix}\n", "\\tag{19.19}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For $t,s\\in T^{(0,k)}M$ and $a,b\\in R$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", "\\begin{matrix}\n", "\\displaystyle\n", "\\mathcal{L}_X(at+bs)\n", "=\\lim_{h→0}\\frac{\\phi^*_h(at+bs)-(at+bs)}{h}\\\\\n", "\\displaystyle\n", "=\\lim_{h→0}\\frac{a\\phi^*_ht+b\\phi^*_hs-at-bs}{h}\n", "=a\\mathcal{L}_Xt +b\\mathcal{L}_Xs.\n", "\\end{matrix}\n", "\\tag{19.20}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For $f ∈ C^∞ (M)$ and $t\\in T^{(0,k)}M$\n", "\n", "\\begin{equation}\n", "\\begin{matrix}\n", "\\displaystyle\n", "\\mathcal{L}_X(ft)\n", "=\\lim_{h→0}\\frac{\\phi^*_h(ft)-ft}{h}\n", "=\\lim_{h→0}\\frac{(\\phi^*_hf)(\\phi_h^*t)-ft}{h}\\\\\n", "\\displaystyle\n", "=\\lim_{h→0}\\Big[\\phi^*_hf\\frac{\\phi^*_ht-t}{h}\n", "+\\frac{\\phi^*_hf-f}{h}t\\Big]\n", "=f(\\mathcal{L}_X t)+(\\mathcal{L}_Xf)t.\n", "\\end{matrix}\n", "\\tag{19.21}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", "\\begin{matrix}\n", "\\displaystyle\n", "\\mathcal{L}_Xdf\n", "=\\lim_{h→0}\\frac{\\phi^*_hdf-df}{h}\n", "=\\lim_{h→0}\\frac{d(\\phi^*_hf)-df}{h}\n", "=d(\\mathcal{L}_Xf). \n", "\\end{matrix}\n", "\\tag{19.22}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Lie derivative of covariant tensor fields in local components\n", "\n", "
\n", "\n", "If $t\\in T^{(0,k)}M$ is given locally by $t = t_{i_1... i_k} dx^{i_1} ⊗· · · ⊗ dx^{i_k}$, then\n", "\n", "$$\n", "\\mathcal{L}_X t = \n", "\\mathcal{L}_X (t_{i_1... i_k} dx^{i_1} ⊗ · · · ⊗ dx^{i_k} )\\\\\n", "= (\\mathcal{L}_X t_{i_1... i_k})dx^{i_1} ⊗ · · · ⊗ dx^{i_k} \\\\ \n", "+ t_{i_1... i_k}\\big( \\mathcal{L}_X dx^{i_1} ⊗ · · · ⊗ dx^{i_k} + · · · +\n", "dx^{i_1} ⊗ · · · ⊗ \\mathcal{L}_Xdx^{i_k}\\big)\\\\\n", "=(Xt_{i_1... i_k})dx^{i_1} ⊗ · · · ⊗ dx^{i_k}\\\\\n", "+ t_{i_1... i_k}\\big[d (\\mathcal{L}_X x^{i_1}) ⊗ · · · ⊗ dx^{i_k} + · · · +\n", "dx^{i_1} ⊗ · · · ⊗ d(\\mathcal{L}_Xx^{i_k})\\big].\\\\\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If $X = X^m \\frac{∂}{∂ x^m}$, then\n", "\n", "$$\n", "\\mathcal{L}_Xx^i=Xx^i=\\big(X^m \\frac{∂}{∂ x^m}\\big)x^i=X^i,\n", "$$\n", "\n", "consequently\n", "\n", "\\begin{equation}\n", "d(\\mathcal{L}_Xx^i)=dX^i=\\frac{∂X^i}{∂ x^m}dx^m,\n", "\\tag{19.22'}\n", "\\end{equation}\n", "\n", "and\n", "\\begin{eqnarray*}\n", "&\\mathcal{L}_X t = (Xt_{i_1... i_k} ) dx^{i_1} ⊗ · · · ⊗ dx^{i_k}\\\\\n", "&+t_{i_1... i_k} \\big(\\frac{∂X^{i_1}}{∂ x^m}dx^m\\otimes\\ldots\\otimes dx^{i_k}+\\ldots+dx^{i_1}\\otimes\\ldots\\otimes\\frac{∂X^{i_k}}{∂ x^m}dx^m\\Big)\\\\\n", "&=\\big(X^m\\frac{\\partial t_{i_1... i_k}}{∂ x^m}+\n", "t_{i_m... i_k}\\frac{∂X^{i_m}}{∂ x^{i_1}}+\\ldots\n", "+t_{i_1... i_m}\\frac{∂X^{i_m}}{∂ x^{i_k}}\\Big)dx^{i_1} ⊗ · · · ⊗ dx^{i_k}.\n", "\\tag{19.23}\n", "\\end{eqnarray*}\n", "\n", "
\n", "\n", "**Example 19.8**\n", "\n", "Compute $\\ \\mathcal{L}_Xt\\ \\ $ for $\\ X=(1-x)\\frac{\\partial}{\\partial x}+(x-y)\\frac{\\partial}{\\partial y}\\ \\ $ and $\\ \\ t=xdx⊗dx+dx⊗d𝑦+𝑦d𝑦⊗dx.$\n", "\n", "
\n", "\n", "First define the tensor field and vector field:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle t = x \\mathrm{d} x\\otimes \\mathrm{d} x +\\mathrm{d} x\\otimes \\mathrm{d} y + y \\mathrm{d} y\\otimes \\mathrm{d} x\\)" ], "text/latex": [ "$\\displaystyle t = x \\mathrm{d} x\\otimes \\mathrm{d} x +\\mathrm{d} x\\otimes \\mathrm{d} y + y \\mathrm{d} y\\otimes \\mathrm{d} x$" ], "text/plain": [ "t = x dx⊗dx + dx⊗dy + y dy⊗dx" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%display latex\n", "M = Manifold(2, 'M') # manifold M\n", "c_xy. = M.chart() # chart on M\n", "e_xy = c_xy.frame() # local basis of vector fields\n", "t = M.tensor_field(0, 2, {e_xy: [[x, 1], [y, 0]]}, name='t') \n", "t.disp() # tensor field t of (0,2)-type " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left(M, \\left(\\frac{\\partial}{\\partial x },\\frac{\\partial}{\\partial y }\\right)\\right)\\)" ], "text/latex": [ "$\\displaystyle \\left(M, \\left(\\frac{\\partial}{\\partial x },\\frac{\\partial}{\\partial y }\\right)\\right)$" ], "text/plain": [ "Coordinate frame (M, (∂/∂x,∂/∂y))" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e_xy # show the local basis" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle X = \\left( -x + 1 \\right) \\frac{\\partial}{\\partial x } + \\left( x - y \\right) \\frac{\\partial}{\\partial y }\\)" ], "text/latex": [ "$\\displaystyle X = \\left( -x + 1 \\right) \\frac{\\partial}{\\partial x } + \\left( x - y \\right) \\frac{\\partial}{\\partial y }$" ], "text/plain": [ "X = (-x + 1) ∂/∂x + (x - y) ∂/∂y" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = M.vector_field({e_xy: [1-x, x-y]}, name='X')\n", "X.disp() # vector field X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can compute $\\ \\mathcal{L}_Xt:\\ \\ $ " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left( -3 \\, x + y + 2 \\right) \\mathrm{d} x\\otimes \\mathrm{d} x -2 \\mathrm{d} x\\otimes \\mathrm{d} y + \\left( x - 3 \\, y \\right) \\mathrm{d} y\\otimes \\mathrm{d} x\\)" ], "text/latex": [ "$\\displaystyle \\left( -3 \\, x + y + 2 \\right) \\mathrm{d} x\\otimes \\mathrm{d} x -2 \\mathrm{d} x\\otimes \\mathrm{d} y + \\left( x - 3 \\, y \\right) \\mathrm{d} y\\otimes \\mathrm{d} x$" ], "text/plain": [ "(-3*x + y + 2) dx⊗dx - 2 dx⊗dy + (x - 3*y) dy⊗dx" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lt = t.lie_derivative(X) # Lie derivative L_X(t)\n", "lt.display(e_xy)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.9**\n", "\n", "For a deeper understanding of the formula (19.23) let us take a more general example.\n", "\n", "Let $\\ \\ t=𝑡_{00}d𝑥^0⊗d𝑥^0+𝑡_{01}d𝑥^0⊗d𝑥^1+𝑡_{10}d𝑥^1⊗d𝑥^0+𝑡_{11}d𝑥^1⊗d𝑥^1.\\ \\ $" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle t = t_{00} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{0}} + t_{01} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{1}} + t_{10} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{0}} + t_{11} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}\\)" ], "text/latex": [ "$\\displaystyle t = t_{00} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{0}} + t_{01} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{1}} + t_{10} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{0}} + t_{11} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}$" ], "text/plain": [ "t = t00 dx0⊗dx0 + t01 dx0⊗dx1 + t10 dx1⊗dx0 + t11 dx1⊗dx1" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "N=2 # dimension of manifold M\n", "M = Manifold(N, 'M') # manifold M \n", "c_x = M.chart(' '.join(['x'+str(i)+':x^{'+str(i)+'}' for i in range(N)])) # chart on M\n", "x0, x1 = c_x[:] # coordinates x^0, x^1 of chart c_x as the Python variables x0, x1\n", "t = M.tensor_field(0,2, name='t') # tensor field t of type (0,2) \n", "def f2(i,j): return 't'+str(i)+str(j) # names of components\n", " # component functions:\n", "f1 = [[M.scalar_field(function(f2(j,k))(x0,x1), name=f2(j,k)) \n", " for k in range(N)] for j in range(N)]\n", "t[:] = f1 # define all components of t\n", "%display latex\n", "Manifold.options.omit_function_arguments=True \n", "t.disp() # show tensor field t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and $\\ \\ X=X^0\\frac{\\partial}{\\partial x^0}+X^1\\frac{\\partial}{\\partial x^1}$" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle X = X^0 \\frac{\\partial}{\\partial {x^{0}} } + X^1 \\frac{\\partial}{\\partial {x^{1}} }\\)" ], "text/latex": [ "$\\displaystyle X = X^0 \\frac{\\partial}{\\partial {x^{0}} } + X^1 \\frac{\\partial}{\\partial {x^{1}} }$" ], "text/plain": [ "X = X0 ∂/∂x0 + X1 ∂/∂x1" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# continuation\n", "X = M.vector_field(name='X') # vector field X\n", "Xf=[M.scalar_field(function('X'+str(i), # list of components\n", " latex_name='X'+'^'+str(i))(x0,x1))\n", " for i in range(N)]\n", "X[:] = Xf # define all comp. of X\n", "X.disp() # show vect.field X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute the Lie derivative$\\ \\mathcal{L}_Xt:\\ \\ $ " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left( 2 \\, t_{00} \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + {\\left(t_{01} + t_{10}\\right)} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t_{00}}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t_{00}}{\\partial {x^{1}}} \\right) \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{0}} + \\left( t_{01} \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + t_{00} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t_{11} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + t_{01} \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t_{01}}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t_{01}}{\\partial {x^{1}}} \\right) \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{1}} + \\left( t_{10} \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + t_{00} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t_{11} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + t_{10} \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t_{10}}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t_{10}}{\\partial {x^{1}}} \\right) \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{0}} + \\left( {\\left(t_{01} + t_{10}\\right)} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + 2 \\, t_{11} \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t_{11}}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t_{11}}{\\partial {x^{1}}} \\right) \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}\\)" ], "text/latex": [ "$\\displaystyle \\left( 2 \\, t_{00} \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + {\\left(t_{01} + t_{10}\\right)} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t_{00}}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t_{00}}{\\partial {x^{1}}} \\right) \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{0}} + \\left( t_{01} \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + t_{00} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t_{11} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + t_{01} \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t_{01}}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t_{01}}{\\partial {x^{1}}} \\right) \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{1}} + \\left( t_{10} \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + t_{00} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t_{11} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + t_{10} \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t_{10}}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t_{10}}{\\partial {x^{1}}} \\right) \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{0}} + \\left( {\\left(t_{01} + t_{10}\\right)} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + 2 \\, t_{11} \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t_{11}}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t_{11}}{\\partial {x^{1}}} \\right) \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}$" ], "text/plain": [ "(2*t00*d(X0)/dx0 + (t01 + t10)*d(X1)/dx0 + X0*d(t00)/dx0 + X1*d(t00)/dx1) dx0⊗dx0 + (t01*d(X0)/dx0 + t00*d(X0)/dx1 + t11*d(X1)/dx0 + t01*d(X1)/dx1 + X0*d(t01)/dx0 + X1*d(t01)/dx1) dx0⊗dx1 + (t10*d(X0)/dx0 + t00*d(X0)/dx1 + t11*d(X1)/dx0 + t10*d(X1)/dx1 + X0*d(t10)/dx0 + X1*d(t10)/dx1) dx1⊗dx0 + ((t01 + t10)*d(X0)/dx1 + 2*t11*d(X1)/dx1 + X0*d(t11)/dx0 + X1*d(t11)/dx1) dx1⊗dx1" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lt = t.lie_derivative(X)\n", "lt.disp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For comparison, using (19.23) without simplifications we obtain \n", "\n", "$$\n", "\\begin{matrix}\n", "\\Big(X^m\\frac{\\partial t_{i_1... i_k}}{∂ x^m} &\n", "+t_{i_m... i_k}\\frac{∂X^{i_m}}{∂ x^{i_1}}+ &\n", "...+t_{i_1... i_m}\\frac{∂X^{i_m}}{∂ x^{i_k}}\\Big) &\n", "dx^{i_1} ⊗ · · · ⊗ dx^{i_k}\\\\\n", "=\\Big(X^0\\frac{\\partial t_{00}}{\\partial x^0}+X^1 \\frac{\\partial t_{00}}{\\partial x^1} &\n", "+t_{00}\\frac{\\partial X^0}{\\partial x^0}+t_{10}\\frac{\\partial X^1}{\\partial x^0} &\n", "+t_{00}\\frac{\\partial X^0}{\\partial x^0}+t_{01}\\frac{\\partial X^1}{\\partial x^0} \\Big)&\n", "dx^0\\otimes dx^0\\\\\n", "+\\Big(X^0\\frac{\\partial t_{01}}{\\partial x^0}+X^1 \\frac{\\partial t_{01}}{\\partial x^1} &\n", "+t_{01}\\frac{\\partial X^0}{\\partial x^0}+t_{11}\\frac{\\partial X^1}{\\partial x^0} &\n", "+t_{00}\\frac{\\partial X^0}{\\partial x^1}+t_{01}\\frac{\\partial X^1}{\\partial x^1} \\Big)&\n", "dx^0\\otimes dx^1\\\\\n", "+\\Big(X^0\\frac{\\partial t_{10}}{\\partial x^0}+X^1 \\frac{\\partial t_{10}}{\\partial x^1} &\n", "+t_{00}\\frac{\\partial X^0}{\\partial x^1}+t_{10}\\frac{\\partial X^1}{\\partial x^1} &\n", "+t_{10}\\frac{\\partial X^0}{\\partial x^0}+t_{11}\\frac{\\partial X^1}{\\partial x^0} \\Big)&\n", "dx^1\\otimes dx^0\\\\\n", "+\\Big(X^0\\frac{\\partial t_{11}}{\\partial x^0}+X^1 \\frac{\\partial t_{11}}{\\partial x^1} &\n", "+t_{01}\\frac{\\partial X^0}{\\partial x^1}+t_{11}\\frac{\\partial X^1}{\\partial x^1} &\n", "+t_{10}\\frac{\\partial X^0}{\\partial x^1}+t_{11}\\frac{\\partial X^1}{\\partial x^1} \\Big)&\n", "dx^1\\otimes dx^1,\n", "\\end{matrix}\n", "$$\n", "\n", "which of course gives the same result." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⌟ 」 」\n" ] } ], "source": [ "# 3 ways how to obtain contraction sign\n", "print(u'\\u231F',u'\\u300D',u'\\uFF63')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Contraction with a vector field (interior product)\n", "\n", "
\n", "\n", "If $t\\in T^{(0,k)}M,\\ X\\in \\mathfrak{X}(M)$, then the **contraction**\n", "of $t$ with $X$, denoted by $\\ X\\mathbin{」}t\\ $ is a tensor field from \n", "$T^{(0,k-1)}M$ defined by\n", "\n", "\\begin{equation}\n", "(X\\mathbin{」}t)_p(X_{2p},\\ldots,X_{kp})=t_p(X_p,X_{2p},\\ldots,X_{kp}).\n", "\\tag{19.24}\n", "\\end{equation}\n", "\n", "\n", "
\n", "\n", "**Example 19.10**\n", "\n", "Let us compute $\\ \\ X\\mathbin{」}t\\ \\ $ for $\\ \\ X=X^1\\frac{\\partial}{\\partial x^1}+\n", "X^2\\frac{\\partial}{\\partial x^2}\\ \\ $ and $\\ \\ 𝑔=d𝑥^1⊗d𝑥^1+d𝑥^2⊗d𝑥^2.$\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle g = \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}+\\mathrm{d} {x^{2}}\\otimes \\mathrm{d} {x^{2}}\\)" ], "text/latex": [ "$\\displaystyle g = \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}+\\mathrm{d} {x^{2}}\\otimes \\mathrm{d} {x^{2}}$" ], "text/plain": [ "g = dx1⊗dx1 + dx2⊗dx2" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%display latex \n", "N = 2 # dimension of manifold M\n", "M = Manifold(2, 'M',start_index=1) # manifold M\n", "c_x = M.chart(' '.join(['x'+str(i)+':x^{'+str(i)+'}' for i in range(1, N+1)])) # chart on M\n", "x1, x2 = c_x[:] # coordinates x^1, x^2 of chart c_x as the Python variables x1, x2\n", "g = M.tensor_field(0, 2, name='g'); # tensor field of type (0,2)\n", "g[1,1] = 1; g[2,2] = 1 # set nonzero components\n", "g.display() # show g" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle X^1 \\frac{\\partial}{\\partial {x^{1}} } + X^2 \\frac{\\partial}{\\partial {x^{2}} }\\)" ], "text/latex": [ "$\\displaystyle X^1 \\frac{\\partial}{\\partial {x^{1}} } + X^2 \\frac{\\partial}{\\partial {x^{2}} }$" ], "text/plain": [ "X1 ∂/∂x1 + X2 ∂/∂x2" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = M.vector_field() # vector field X\n", "X[:] = (function('X1', latex_name='X^1')(x1,x2), # define components of X\n", " function('X2', latex_name='X^2')(x1,x2)) \n", "Manifold.options.omit_function_arguments=True \n", "X.display() # show X" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle X^1 \\mathrm{d} {x^{1}} + X^2 \\mathrm{d} {x^{2}}\\)" ], "text/latex": [ "$\\displaystyle X^1 \\mathrm{d} {x^{1}} + X^2 \\mathrm{d} {x^{2}}$" ], "text/plain": [ "X1 dx1 + X2 dx2" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.contract(g).display() # X 」g" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.11**\n", "\n", "Compute $\\ \\ X\\mathbin{」} a\\ \\ $ for $\\ \\ X=X^1\\frac{\\partial}{\\partial x^1}+\n", "X^2\\frac{\\partial}{\\partial x^2}\\ \\ $ and $\\ \\ a= 𝑎_1d𝑥^1+𝑎_2d𝑥^2.$" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle a_{1} \\mathrm{d} {x^{1}} + a_{2} \\mathrm{d} {x^{2}}\\)" ], "text/latex": [ "$\\displaystyle a_{1} \\mathrm{d} {x^{1}} + a_{2} \\mathrm{d} {x^{2}}$" ], "text/plain": [ "a1 dx1 + a2 dx2" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# continuation\n", "a = M.one_form() # one-form a\n", " # define components of a\n", "a[:] = (function('a1')(x1,x2), function('a2')(x1,x2))\n", "a.disp() # show a" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{1}}, {x^{2}}\\right) & \\longmapsto & X^1 a_{1} + X^2 a_{2} \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{1}}, {x^{2}}\\right) & \\longmapsto & X^1 a_{1} + X^2 a_{2} \\end{array}$" ], "text/plain": [ "M → ℝ\n", "(x1, x2) ↦ X1*a1 + X2*a2" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(X.contract(a)).disp() # X 」 a" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{1}}, {x^{2}}\\right) & \\longmapsto & X^1 a_{1} + X^2 a_{2} \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{1}}, {x^{2}}\\right) & \\longmapsto & X^1 a_{1} + X^2 a_{2} \\end{array}$" ], "text/plain": [ "M → ℝ\n", "(x1, x2) ↦ X1*a1 + X2*a2" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.interior_product(a).disp() # interior product\n", " # gives the same results for k-forms" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{1}}, {x^{2}}\\right) & \\longmapsto & X^1 a_{1} + X^2 a_{2} \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{1}}, {x^{2}}\\right) & \\longmapsto & X^1 a_{1} + X^2 a_{2} \\end{array}$" ], "text/plain": [ "M → ℝ\n", "(x1, x2) ↦ X1*a1 + X2*a2" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a(X).disp() # value of a on X" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{1}}, {x^{2}}\\right) & \\longmapsto & X^1 a_{1} + X^2 a_{2} \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{llcl} & M & \\longrightarrow & \\mathbb{R} \\\\ & \\left({x^{1}}, {x^{2}}\\right) & \\longmapsto & X^1 a_{1} + X^2 a_{2} \\end{array}$" ], "text/plain": [ "M → ℝ\n", "(x1, x2) ↦ X1*a1 + X2*a2" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X(a).disp() # value of X on a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.12**\n", "\n", "Compute $\\ \\ X\\mathbin{」}t\\ \\ $ for $\\ \\ X=X^0\\frac{\\partial}{\\partial x^0}+\n", "X^1\\frac{\\partial}{\\partial x^1}\\ \\ $ and $\\ \\ 𝑡=𝑡_{00}d𝑥^0⊗d𝑥^0+𝑡_{01}d𝑥^0⊗d𝑥^1+𝑡_{10}d𝑥^1⊗d𝑥^0+𝑡_{11}d𝑥^1⊗d𝑥^1.$" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle t = t_{00} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{0}} + t_{01} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{1}} + t_{10} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{0}} + t_{11} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}\\)" ], "text/latex": [ "$\\displaystyle t = t_{00} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{0}} + t_{01} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{1}} + t_{10} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{0}} + t_{11} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}$" ], "text/plain": [ "t = t00 dx0⊗dx0 + t01 dx0⊗dx1 + t10 dx1⊗dx0 + t11 dx1⊗dx1" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "N = 2 # dimension of manifold M\n", "M = Manifold(N, 'M') # manifold M\n", "c_x = M.chart(' '.join(['x'+str(i)+':x^{'+str(i)+'}' for i in range(N)])) # chart on M\n", "x0, x1 = c_x[:] # coordinates x^0, x^1 of chart c_x as the Python variables x0, x1\n", "t = M.tensor_field(0,2, name='t') # tensor field t of type (0,2)\n", "def f2(i,j): return 't'+str(i)+str(j) # names of components\n", " # list of components:\n", "f = [[M.scalar_field(function(f2(j,k))(x0,x1), name=f2(j,k)) \n", " for k in range(2)] for j in range(2)]\n", "t[:] = f # all components of t\n", "%display latex\n", "Manifold.options.omit_function_arguments=True \n", "t.disp() # show t" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "X = M.vector_field() # vector field X\n", "X[:] = (function('X0',latex_name='X^0')(x0,x1), # list of comp.\n", " function('X1',latex_name='X^1')(x0,x1)) " ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left( X^0 t_{00} + X^1 t_{10} \\right) \\mathrm{d} {x^{0}} + \\left( X^0 t_{01} + X^1 t_{11} \\right) \\mathrm{d} {x^{1}}\\)" ], "text/latex": [ "$\\displaystyle \\left( X^0 t_{00} + X^1 t_{10} \\right) \\mathrm{d} {x^{0}} + \\left( X^0 t_{01} + X^1 t_{11} \\right) \\mathrm{d} {x^{1}}$" ], "text/plain": [ "(X0*t00 + X1*t10) dx0 + (X0*t01 + X1*t11) dx1" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.contract(t).display() # X 」 t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Pullback of contraction\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let $ψ:M → N$ be a diffeomorphisms, $\\ t\\in T^{(0,k)}N\\ $ and $\\ X\\in \\mathfrak{X}(N)$. Recall that since $ψ^∗ X$ and $X$ are $ψ$-related, then $X_{\\psi(p)}=d\\psi_p(\\psi^*X)_p\\ $ (cf. (19.7')) and \n", "$(ψ^∗ X)(ψ^∗ f ) = ψ^∗ (X f )\\ $ (cf. (19.8)), therefore\n", "\n", "$$[(ψ^∗ X)\\mathbin{」}(ψ^∗ t)]_p (X_{2p} , . . . , X_{kp} )\n", "=(ψ^∗ t)_p ((ψ^∗ X)_p , X_{2p} , . . . , X_{kp})\\\\\n", "= t_{ψ( p)} (dψ_p (ψ^∗ X)_p , dψ_p X_{2p} , . . . , dψ_p X_{kp})\\\\\n", "= t_{ψ( p)} (X_{ψ( p)} ,dψ_p X_{2p} , . . . , dψ_p X_{kp} )\\\\\n", "=(X\\mathbin{」} t)_{ψ( p)} (dψ_p X_{2p} , . . . , dψ_p X_{kp} )\n", "= [ψ^∗ (X\\mathbin{」} t)]_p (X_{2p} , . . . , X_{kp} ),\n", "$$\n", "\n", "for $X_{2p},\\ldots,X_{kp}\\in T_pN.$ We have proved\n", "\n", "\\begin{equation}\n", "ψ^∗ (X\\mathbin{」} t)=(ψ^∗ X)\\mathbin{」}(ψ^∗ t).\n", "\\tag{19.25}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Lie derivative of contraction\n", "\n", "
\n", "\n", "In a consequence, if $\\phi_t$ is a one-parameter group of transformations on 𝑀, $X$ its infinitesimal generator and $Y\\in\\mathfrak{X}(M)$, then for $t\\in T^{(0,k)}M$\n", "$$\\mathcal{L}_X (Y\\mathbin{」}t)=\n", "\\lim_{h\\to 0}\\frac{\\phi_h^*(Y\\mathbin{」}t)-Y\\mathbin{」}t}{h}\n", "=\\lim_{h\\to 0}\\frac{\\phi_h^*(Y)\\mathbin{」}(\\phi^*_ht)-Y\\mathbin{」}t}{h}\\\\\n", "=\\lim_{h\\to 0}\\frac{\\phi_h^*(Y)\\mathbin{」}(\\phi^*_ht)-\n", "\\phi_h^*(Y)\\mathbin{」}t+\\phi_h^*(Y)\\mathbin{」}t-Y\\mathbin{」}t}{h}\\\\\n", "=\\lim_{h\\to 0}\\Big[\\phi_h^*Y\\mathbin{」}\\frac{\\phi_h^*t-t}{h}+\n", "\\frac{\\phi_h^*Y-Y}{h}\\mathbin{」}t\\Big].\n", "$$\n", "\n", "Thus\n", "\\begin{equation}\n", "\\mathcal{L}_X (Y\\mathbin{」}t)=(\\mathcal{L}_XY)\\mathbin{」}t\n", "+Y\\mathbin{」}\\mathcal{L}_Xt.\n", "\\tag{19.26}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.13**\n", "\n", "Compute both sides of (19.26) for \n", "$\\ X=-y\\frac{\\partial}{\\partial x}+x\\frac{\\partial}{\\partial y},$\n", "$\\ \\ Y=(1-x)\\frac{\\partial}{\\partial x}+(x-y)\\frac{\\partial}{\\partial y}\\ \\ $ and $g=ydx⊗dx+xd𝑦⊗dy.$\n", "\n", "First we define $g,\\ X,\\ Y$:\n" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "%display latex\n", "M = Manifold(2, 'M') # manifold M\n", "c_xy. = M.chart() # chart on M\n", "g = M.tensor_field(0,2, name='g'); # tensor field of type (0,2)\n", "g[0,0] = y; g[1,1] = x # set nonzero components\n", "X = M.vector_field(-y, x, name='X') # vector field X\n", "Y = M.vector_field(1-x, x-y, name='Y') # vector field Y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Left hand side of (19.26) in SageMath:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left( -x y + y^{2} + x \\right) \\mathrm{d} x + \\left( -x^{2} - {\\left(x + 1\\right)} y + y^{2} \\right) \\mathrm{d} y\\)" ], "text/latex": [ "$\\displaystyle \\left( -x y + y^{2} + x \\right) \\mathrm{d} x + \\left( -x^{2} - {\\left(x + 1\\right)} y + y^{2} \\right) \\mathrm{d} y$" ], "text/plain": [ "(-x*y + y^2 + x) dx + (-x^2 - (x + 1)*y + y^2) dy" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(Y.contract(g)).lie_derivative(X).disp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Right hand side of (19.26):" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left( -x y + y^{2} + x \\right) \\mathrm{d} x + \\left( -x^{2} - {\\left(x + 1\\right)} y + y^{2} \\right) \\mathrm{d} y\\)" ], "text/latex": [ "$\\displaystyle \\left( -x y + y^{2} + x \\right) \\mathrm{d} x + \\left( -x^{2} - {\\left(x + 1\\right)} y + y^{2} \\right) \\mathrm{d} y$" ], "text/plain": [ "(-x*y + y^2 + x) dx + (-x^2 - (x + 1)*y + y^2) dy" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r1 = (Y.lie_derivative(X)).contract(g)\n", "r2 = Y.contract(g.lie_derivative(X))\n", "(r1 + r2).disp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Computing the Lie derivative of covariant tensor fields with the help of Lie brackets\n", "\n", "
\n", "\n", "\n", "From (19.24) it follows\n", "\\begin{equation}\n", "t_p(X_p,X_{2p},\\ldots,X_{kp})=(X\\mathbin{」}t)_p(X_{2p},\\ldots,X_{kp}),\\quad \\text{for}\\ t\\in T^{(0,k)}M,\n", "\\end{equation}\n", "\n", "and $X_i\\in\\mathfrak{X}(M)$.\n", "\n", "As a consequence we obtain\n", "\n", "$$\n", "t_p(Y_{1p},Y_{2p},\\ldots,Y_{kp})=(Y_{1p}\\mathbin{」}t)_p(Y_{2p},\\ldots,Y_{kp})\\\\\n", "=(Y_{2p}\\mathbin{」}(Y_{1p}\\mathbin{」}t))_p(Y_{3p},\\ldots,Y_{kp})=\\ldots\\\\\n", "=(Y_{kp}\\mathbin{」}Y_{(k-1)p}\\mathbin{」}\\ldots\\mathbin{」}Y_{1p}\\mathbin{」}t),\n", "$$\n", "\n", "i.e., for $\\ t\\in T^{(0,k)}M$ and $Y_i\\in\\mathfrak{X}(M)$\n", "\n", "\\begin{equation}\n", "t(Y_1,Y_2,\\ldots,Y_k)=Y_k\\mathbin{」}Y_{k-1}\\mathbin{」}\\ldots\\mathbin{」}Y_1\\mathbin{」}t.\n", "\\tag{19.27}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We know from (19.2) that\n", "$Xf=\\mathcal{L}_Xf$, so\n", "\n", "$$X( t (Y_1 , . . . , Y_k ))\n", "= \\mathcal{L}_X (t (Y_1 , . . . , Y_k ))=\n", "\\mathcal{L}_X(Y_k\\mathbin{」}Y_{k-1}\\mathbin{」}\\ldots\\mathbin{」}Y_1\\mathbin{」}t)\\\\\n", "=[(\\mathcal{L}_XY_k)\\mathbin{」}Y_{k-1}\\mathbin{」}\\ldots\\mathbin{」}Y_1\\mathbin{」}t\\\\\n", "+Y_k\\mathbin{」}(\\mathcal{L}_XY_{k-1})\\mathbin{」}\\ldots\\mathbin{」}Y_1\\mathbin{」}t\\\\\n", "............................\\\\\n", "+Y_k\\mathbin{」}Y_{k-1}\\mathbin{」}\\ldots\\mathbin{」}(\\mathcal{L}_XY_1)\\mathbin{」}t\\\\\n", "+Y_k\\mathbin{」}Y_{k-1}\\mathbin{」}\\ldots\\mathbin{」}Y_1\\mathbin{」}(\\mathcal{L}_Xt)]\n", "$$\n", "\n", "According to (19.27) we have\n", "\n", "$$ t(Y_1,\\ldots,Y_{k-1},\\mathcal{L}_XY_k)=\n", "(\\mathcal{L}_XY_k)\\mathbin{」}Y_{k-1}\\mathbin{」}\\ldots\\mathbin{」}Y_1\\mathbin{」}t,\\\\\n", "t(Y_1,\\ldots,\\mathcal{L}_XY_{k-1},Y_k)=\n", "Y_k\\mathbin{」}(\\mathcal{L}_XY_{k-1})\\mathbin{」}\\ldots\\mathbin{」}Y_1\\mathbin{」}t,\\\\\n", "......................................\\\\\n", "t(\\mathcal{L}_XY_1,\\ldots,Y_{k-1},Y_k)=\n", "Y_k\\mathbin{」}Y_{k-1}\\mathbin{」}\\ldots\\mathbin{」}(\\mathcal{L}_XY_1)\\mathbin{」}t,\\\\\n", "(\\mathcal{L}_Xt)(Y_1,\\ldots,Y_{k-1},Y_k)=\n", "Y_k\\mathbin{」}Y_{k-1}\\mathbin{」}\\ldots\\mathbin{」}Y_1\\mathbin{」}(\\mathcal{L}_Xt).\n", "$$\n", "\n", "Therefore \n", "\n", "$$X( t (Y_1 , . . . , Y_k ))\n", "=t (Y_1 , Y_2 , . . . , \\mathcal{L}_X Y_k ) + t (Y_1 , Y_2 , . . . , \\mathcal{L}_X Y_{k−1} , Y_k ) + · · ·\\\\\n", "+ t (\\mathcal{L}_X Y_1 , Y_2 , . . . , Y_k ) + (\\mathcal{L}_X t)(Y_1 , . . . , Y_k )\\\\\n", "= (\\mathcal{L}_X t)(Y_1 , . . . , Y_k )+\n", "\\sum_{i=1}^k t (Y_1 , . . . , \\mathcal{L}_X Y_i , . . . , Y_k).\n", "$$\n", "We have proved\n", "\n", "\\begin{equation}\n", "(\\mathcal{L}_X t)(Y_1 ,.., Y_k ) = X (t (Y_1 ,.., Y_k ))\n", "-\\sum_{i=1}^kt (Y_1 ,.., [X, Y_i ],.., Y_k ).\n", "\\tag{19.28}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.14**\n", "\n", "Compute both sides of (19.28) for \n", "$\\ X=-y\\frac{\\partial}{\\partial x}+x\\frac{\\partial}{\\partial y},$\n", "$\\ \\ Y_1=(1-x)\\frac{\\partial}{\\partial x}+(x-y)\\frac{\\partial}{\\partial y},\\ \\ Y_2=(y+1)\\frac{\\partial}{\\partial x}+(x-2)\\frac{\\partial}{\\partial y},\\ $ and $t=ydx⊗dx+xd𝑦⊗dy.$\n", "\n", "
\n", "\n", "First we define $\\ t,\\ X,\\ Y_1,Y_2$:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "%display latex\n", "M = Manifold(2, 'M') # manifold M\n", "c_xy. = M.chart() # chart on M\n", "t = M.tensor_field(0,2, name='t') # tensor field of type (0,2)\n", "t[0,0] = y; t[1,1] = x # set nonzero components \n", "X = M.vector_field(-y, x, name='X') # vector field X\n", "Y1 = M.vector_field(1-x, x-y, name='Y1') # vector field Y1\n", "Y2 = M.vector_field(y+1, x-2, name='Y2') # vector field Y2" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle -x^{3} - {\\left(x + 1\\right)} y^{2} + y^{3} + 3 \\, x^{2} - 2 \\, {\\left(x - 1\\right)} y - x\\)" ], "text/latex": [ "$\\displaystyle -x^{3} - {\\left(x + 1\\right)} y^{2} + y^{3} + 3 \\, x^{2} - 2 \\, {\\left(x - 1\\right)} y - x$" ], "text/plain": [ "-x^3 - (x + 1)*y^2 + y^3 + 3*x^2 - 2*(x - 1)*y - x" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "L = t.lie_derivative(X)(Y1,Y2) # left hand side of (19.28)\n", "L.expr() # value of L" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle X\\left(t\\left(Y1,Y2\\right)\\right)-t\\left(\\left[X,Y1\\right],Y2\\right)-t\\left(Y1,\\left[X,Y2\\right]\\right)\\)" ], "text/latex": [ "$\\displaystyle X\\left(t\\left(Y1,Y2\\right)\\right)-t\\left(\\left[X,Y1\\right],Y2\\right)-t\\left(Y1,\\left[X,Y2\\right]\\right)$" ], "text/plain": [ "Scalar field X(t(Y1,Y2))-t([X,Y1],Y2)-t(Y1,[X,Y2]) on the 2-dimensional differentiable manifold M" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "R = X(t(Y1,Y2)) - t(X.bracket(Y1),Y2) - t(Y1,X.bracket(Y2))\n", "R # right hand side of (19.28)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle -x^{3} - {\\left(x + 1\\right)} y^{2} + y^{3} + 3 \\, x^{2} - 2 \\, {\\left(x - 1\\right)} y - x\\)" ], "text/latex": [ "$\\displaystyle -x^{3} - {\\left(x + 1\\right)} y^{2} + y^{3} + 3 \\, x^{2} - 2 \\, {\\left(x - 1\\right)} y - x$" ], "text/plain": [ "-x^3 - (x + 1)*y^2 + y^3 + 3*x^2 - 2*(x - 1)*y - x" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "R.expr() # value of R" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Commutator of Lie derivatives of covariant tensor fields\n", "\n", "
\n", "\n", "Repeating the use of (19.28) we obtain\n", "\n", "$$(\\mathcal{L}_X (\\mathcal{L}_Y t)) (Z_1 , . . . , Z_k )\\\\\n", "=X ((\\mathcal{L}_Y t)(Z_1 , . . . , Z_k ))-\\sum_{i=1}^k (\\mathcal{L}_Y t)(Z_1 , . . . , [X, Z_i ], . . . , Z_k )\\\\\n", "= X \\Big\\{Y (t (Z_1 , . . . , Z_k )) -\\sum_{i=1}^k t (Z_1 , . . . , [Y, Z_j ], . . . , Z_k )\\\n", "\\Big\\}\\\\\n", "-\\sum_{i=1}^k \n", "\\Big\\{Y (t (Z_1 , . . . , [X, Z_i ], . . . , Z_k )\n", "− t (Z_1 , . . . , [Y, [X, Z_i ]], . . . , Z_k )\\\\\n", "-\\sum_{j=1,ji}^kt (Z_1 , . . . , [X, Z_i ], . . . , [Y, Z_j ], . . . , Z_k )\n", "\\Big\\}\\\\\n", "= XY( t (Z_1 , . . . , Z_k ))-\\sum_{j=1}^k\n", "X (t (Z_1 , . . . , [Y, Z_j ], . . . , Z_k ))\\\\\n", "-\\sum_{i=1}^k\n", "\\Big\\{Y (t (Z_1 , . . . , [X, Z_i ], . . . , Z_k ) )\n", "− t (Z_1 , . . . , [Y, [X, Z_i ]], . . . , Z_k )\\\\\n", "-\\sum_{j=1,ji}^k\n", "t (Z_1 , . . . , [X, Z_i ], . . . , [Y, Z_j ], . . . , Z_k )\n", "\\Big\\},\n", "$$\n", "\n", "and analogously\n", "\n", "$$\n", "(\\mathcal{L}_Y (\\mathcal{L}_X t)) (Z_1 , . . . , Z_k )\\\\\n", "=YX( t (Z_1 , . . . , Z_k ))\n", "-\\sum_{i=1}^kY (t (Z_1 , . . . , [Y, Z_i ], . . . , Z_k ))\\\\\n", "-\\sum_{i=1}^k\n", "\\Big\\{X (t (Z_1 , . . . , [Y, Z_i ], . . . , Z_k ) )\n", "− t (Z_1 , . . . , [X, [Y, Z_i ]], . . . , Z_k )\\\\\n", "-\\sum_{j=1,ji}^k\n", "t (Z_1 , . . . , [Y, Z_i ], . . . , [X, Z_j ], . . . , Z_k )\n", "\\Big\\}.\n", "$$\n", "\n", "The Jacobi identity \n", "$\\ \\ -[Y,[Z_i,X]]-[X,[Y,Z_i]]-[Z_i,[X,Y]]=0,\\ $\n", "implies \n", "\n", "$$[Y,[X,Z_i]]-[X,[Y,Z_i]]=-[[X,Y],Z_i],$$\n", "\n", "so\n", "\n", "$$\n", "(\\mathcal{L}_X (\\mathcal{L}_Y t) )(Z_1 , . . . , Z_k ) − \\mathcal{L}_Y (\\mathcal{L}_X t) )(Z_1 , . . . , Z_k )\\\\\n", "= [X, Y] (t (Z_1 , . . . , Z_k ))\n", "-\\sum_{i=1}^k t (Z_1 , . . . , [[X, Y], Z_i ], . . . , Z_k ).\n", "$$\n", "Thus \n", "\\begin{equation}\n", "\\mathcal{L}_X (\\mathcal{L}_Y t) − \\mathcal{L}_Y (\\mathcal{L}_X t) = \\mathcal{L}_{[X,Y]} t.\n", "\\tag{19.29}\n", "\\end{equation}\n", "\n", "Using the fact that $\\mathcal{L}_X X = [X, X] = 0$, we obtain:\n", "\n", "$$\\mathcal{L}_X (X \\mathbin{」}t) = (\\mathcal{L}_X X)\\mathbin{」} t + X\\mathbin{」} (\\mathcal{L}_X t) = X\\mathbin{」} (\\mathcal{L}_X t).$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.15**\n", "\n", "Check (19.29) for a 2-dimensional manifold and tensor $t$ of type (0,2)." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle t = t_{00} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{0}} + t_{01} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{1}} + t_{10} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{0}} + t_{11} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}\\)" ], "text/latex": [ "$\\displaystyle t = t_{00} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{0}} + t_{01} \\mathrm{d} {x^{0}}\\otimes \\mathrm{d} {x^{1}} + t_{10} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{0}} + t_{11} \\mathrm{d} {x^{1}}\\otimes \\mathrm{d} {x^{1}}$" ], "text/plain": [ "t = t00 dx0⊗dx0 + t01 dx0⊗dx1 + t10 dx1⊗dx0 + t11 dx1⊗dx1" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%display latex\n", "N = 2 # dimension of manifold M\n", "M = Manifold(N, 'M') # manifold M \n", "c_x = M.chart(' '.join(['x'+str(i)+':x^{'+str(i)+'}' for i in range(N)])) # chart on M\n", "x0, x1 = c_x[:] # coordinates x^0, x^1 of chart c_x as the Python variables x0, x1\n", "X = M.vector_field(name='X') # vector field X\n", "Xf = [M.scalar_field(function('X'+str(i), # list of components\n", " latex_name='X'+'^'+str(i))(x0,x1))\n", " for i in range(N)]\n", "X[:] = Xf \n", "Y = M.vector_field(name='Y') # vector field Y\n", "Yf = [M.scalar_field(function('Y'+str(i), # list of components\n", " latex_name='Y'+'^'+str(i))(x0,x1)) \n", " for i in range(N)]\n", "Y[:] = Yf \n", "\n", "t = M.tensor_field(0,2, name='t') # tensor field t of type (0,2)\n", "def f2(i,j): return 't'+str(i)+str(j) # names of components\n", " # list of components:\n", "f = [[M.scalar_field(function(f2(j,k))(x0,x1), name=f2(j,k)) \n", " for k in range(2)] for j in range(2)]\n", "t[:] = f\n", "t.disp() # show t" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left[X = X^0 \\frac{\\partial}{\\partial {x^{0}} } + X^1 \\frac{\\partial}{\\partial {x^{1}} }, Y = Y^0 \\frac{\\partial}{\\partial {x^{0}} } + Y^1 \\frac{\\partial}{\\partial {x^{1}} }\\right]\\)" ], "text/latex": [ "$\\displaystyle \\left[X = X^0 \\frac{\\partial}{\\partial {x^{0}} } + X^1 \\frac{\\partial}{\\partial {x^{1}} }, Y = Y^0 \\frac{\\partial}{\\partial {x^{0}} } + Y^1 \\frac{\\partial}{\\partial {x^{1}} }\\right]$" ], "text/plain": [ "[X = X0 ∂/∂x0 + X1 ∂/∂x1, Y = Y0 ∂/∂x0 + Y1 ∂/∂x1]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[X.disp(), Y.disp()] # show X,Y" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\mathrm{True}\\)" ], "text/latex": [ "$\\displaystyle \\mathrm{True}$" ], "text/plain": [ "True" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "L_XL_Yt = (t.lie_derivative(Y)).lie_derivative(X) # L_XL_Y(t)\n", "L_YL_Xt = (t.lie_derivative(X)).lie_derivative(Y) # L_YL_X(t)\n", "L = L_XL_Yt-L_YL_Xt # Left hand side of (19.29) \n", "R = t.lie_derivative(X.bracket(Y)) # Right hand side of (19.29)\n", "L == R # check (19.29)\n", "# slow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Lie derivative for general tensor fields\n", "\n", "
\n", "\n", "For a general tensor field $t\\in T^{(k,m)}M$ the lie derivative is defined by\n", "\n", "\\begin{equation}\n", "\\begin{matrix}\n", "(£_X t)(α_1 , . . . , α_k , Y_1 , . . . , Y_m ) = X (t (α_1 , . . . , α_k , Y_1 , . . . , Y_m ))\\\\\n", "-\\sum_{i=1}^k t (α_1 , . . . , £_X α_i , . . . , α_k , Y_1 , . . . , Y_m )\\\\\n", "-\\sum_{i=1}^m t (α_1 , . . . , α_k , Y_1 , . . . , £_X Y_i , . . . , Y_m ),\n", "\\end{matrix}\n", "\\tag{19.30}\n", "\\end{equation}\n", "\n", "for $\\ α_1 , . . . , α_k ∈ \\Omega^1(M)\\ $ and $\\ Y_1 , . . . , Y_m ∈ \\mathfrak{X}(M)$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "### Lie derivative for general tensor fields in components\n", "\n", "
\n", "\n", "If in coordinates $\\ (x^1,\\ldots,x^n)\\ $ the tensor field $t\\in T^{(k,m)}M$ has components\n", "$t^{i_1\\ldots i_k}_{j_1\\ldots j_m}$, then the Lie derivative $\\ \\mathcal{L}_Xt\\ \\ $ has components\n", "\n", "\\begin{equation}\n", "\\begin{matrix}\n", "\\displaystyle\n", "(\\mathcal{L}_Xt)^{i_1\\ldots i_k}_{j_1\\ldots j_m}\n", "=X^p\\frac{\\partial t^{i_1\\ldots i_k}_{j_1\\ldots j_m}}{\\partial x^p}\n", "-t^{p\\,i_2\\ldots i_k}_{j_1\\ldots j_m}\\frac{\\partial X^{i_1}}{\\partial x^p}\n", "\\ldots -t^{i_1\\ldots i_{k-1}p}_{j_1\\ldots j_m}\\frac{\\partial X^{i_k}}{\\partial x^p}\\\\\n", "\\displaystyle\n", "+t^{i_1\\ldots i_k}_{p\\,j_2\\ldots j_m}\\frac{\\partial X^p}{\\partial x^{j_1}}\n", "+\\ldots +t^{i_1\\ldots i_k}_{j_1\\ldots j_{m-1}\\,p}\\frac{\\partial X^p}{\\partial x^{j_m}}.\n", "\\end{matrix}\n", "\\tag{19.31}\n", "\\end{equation}\n", "\n", "\n", "
\n", "\n", "The formula follows from (19.30). In fact, computing $\\mathcal{L}_X$ for scalars $\\ f\\ $ we have by (19.2) $\\ \\mathcal{L}_Xf=Xf,\\ $ so $\\ \\mathcal{L}_X(t^{i_1\\ldots i_k}_{j_1\\ldots j_m})=X^p\\frac{\\partial t^{i_1\\ldots i_k}_{j_1\\ldots j_m}}{\\partial x^p}$, computing $\\mathcal{L}_X$ for $\\ dx^i\\ $ we have by (19.22), (19.22') $\\ \\ \\mathcal{L}_Xdx^i=\\frac{\\partial X^i}{\\partial x^p}dx^p,\\ $ and computing $\\mathcal{L}_X$ for for $\\frac{\\partial}{\\partial x^k}$ we can use Lie brackets:\n", "$$\\mathcal{L}_X \\frac{\\partial}{\\partial x^k}\n", "=[X,\\frac{\\partial}{\\partial x^k}]=[X^p\\frac{\\partial}{\\partial x^p},\n", "\\delta^i_k\\frac{\\partial}{\\partial x^i}]=(X\\delta^i_k-\\frac{\\partial}{\\partial x^k}X^p)\\frac{\\partial}{\\partial x^p}\n", "=-\\frac{\\partial X^p}{\\partial x^k}\n", "\\frac{\\partial}{\\partial x^p},\n", "$$\n", "\n", "(cf. also (19.23)).\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "**Example 19.16**\n", "\n", "Compute the Lie derivative $\\ \\mathcal{L}_Xt\\ \\ $ \n", "for $\\ \\ X=X^0\\frac{\\partial}{\\partial x^0}+\n", "X^1\\frac{\\partial}{\\partial x^1}\\ \\ $ \n", "and\n", "$𝑡=𝑡^0_0\\frac{∂}{∂𝑥^0}⊗d𝑥^0+𝑡^0_1\\frac{∂}{∂𝑥^0}⊗d𝑥^1+𝑡^1_0\\frac{∂}{∂𝑥^1}⊗d𝑥^0+𝑡^1_1\\frac{∂}{∂𝑥^1}⊗d𝑥^1.$" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "%display latex \n", "N = 2 # dimension of manifold M\n", "M = Manifold(N, 'M') # manifold M\n", "c_x = M.chart(' '.join(['x'+str(i)+':x^{'+str(i)+'}' for i in range(N)])) # chart on M" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle t = t^0_0 \\frac{\\partial}{\\partial {x^{0}} }\\otimes \\mathrm{d} {x^{0}} + t^0_1 \\frac{\\partial}{\\partial {x^{0}} }\\otimes \\mathrm{d} {x^{1}} + t^1_0 \\frac{\\partial}{\\partial {x^{1}} }\\otimes \\mathrm{d} {x^{0}} + t^1_1 \\frac{\\partial}{\\partial {x^{1}} }\\otimes \\mathrm{d} {x^{1}}\\)" ], "text/latex": [ "$\\displaystyle t = t^0_0 \\frac{\\partial}{\\partial {x^{0}} }\\otimes \\mathrm{d} {x^{0}} + t^0_1 \\frac{\\partial}{\\partial {x^{0}} }\\otimes \\mathrm{d} {x^{1}} + t^1_0 \\frac{\\partial}{\\partial {x^{1}} }\\otimes \\mathrm{d} {x^{0}} + t^1_1 \\frac{\\partial}{\\partial {x^{1}} }\\otimes \\mathrm{d} {x^{1}}$" ], "text/plain": [ "t = t00 ∂/∂x0⊗dx0 + t01 ∂/∂x0⊗dx1 + t10 ∂/∂x1⊗dx0 + t11 ∂/∂x1⊗dx1" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def fn(i,j): return 't'+str(i)+str(j) # names of components\n", "def fl(i,j): return 't'+'^'+str(i)+'_'+str(j) # latex names of comp.\n", " # list of components of t:\n", "ff = [[M.scalar_field(function(fn(i,j), latex_name=fl(i,j))(*c_x)) \n", " for j in range(N)] for i in range(N)]\n", "t = M.tensor_field(1,1, name='t') # tensor field t\n", "t[:] = ff # define all components of t\n", "Manifold.options.omit_function_arguments=True \n", "t.disp() # show t" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\left( -t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t^0_0}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^0_0}{\\partial {x^{1}}} \\right) \\frac{\\partial}{\\partial {x^{0}} }\\otimes \\mathrm{d} {x^{0}} + \\left( -t^0_1 \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + {\\left(t^0_0 - t^1_1\\right)} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t^0_1}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^0_1}{\\partial {x^{1}}} \\right) \\frac{\\partial}{\\partial {x^{0}} }\\otimes \\mathrm{d} {x^{1}} + \\left( t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{0}}} - {\\left(t^0_0 - t^1_1\\right)} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} - t^1_0 \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t^1_0}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^1_0}{\\partial {x^{1}}} \\right) \\frac{\\partial}{\\partial {x^{1}} }\\otimes \\mathrm{d} {x^{0}} + \\left( t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{1}}} - t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t^1_1}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^1_1}{\\partial {x^{1}}} \\right) \\frac{\\partial}{\\partial {x^{1}} }\\otimes \\mathrm{d} {x^{1}}\\)" ], "text/latex": [ "$\\displaystyle \\left( -t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t^0_0}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^0_0}{\\partial {x^{1}}} \\right) \\frac{\\partial}{\\partial {x^{0}} }\\otimes \\mathrm{d} {x^{0}} + \\left( -t^0_1 \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + {\\left(t^0_0 - t^1_1\\right)} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t^0_1}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^0_1}{\\partial {x^{1}}} \\right) \\frac{\\partial}{\\partial {x^{0}} }\\otimes \\mathrm{d} {x^{1}} + \\left( t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{0}}} - {\\left(t^0_0 - t^1_1\\right)} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} - t^1_0 \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t^1_0}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^1_0}{\\partial {x^{1}}} \\right) \\frac{\\partial}{\\partial {x^{1}} }\\otimes \\mathrm{d} {x^{0}} + \\left( t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{1}}} - t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t^1_1}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^1_1}{\\partial {x^{1}}} \\right) \\frac{\\partial}{\\partial {x^{1}} }\\otimes \\mathrm{d} {x^{1}}$" ], "text/plain": [ "(-t10*d(X0)/dx1 + t01*d(X1)/dx0 + X0*d(t00)/dx0 + X1*d(t00)/dx1) ∂/∂x0⊗dx0 + (-t01*d(X0)/dx0 + (t00 - t11)*d(X0)/dx1 + t01*d(X1)/dx1 + X0*d(t01)/dx0 + X1*d(t01)/dx1) ∂/∂x0⊗dx1 + (t10*d(X0)/dx0 - (t00 - t11)*d(X1)/dx0 - t10*d(X1)/dx1 + X0*d(t10)/dx0 + X1*d(t10)/dx1) ∂/∂x1⊗dx0 + (t10*d(X0)/dx1 - t01*d(X1)/dx0 + X0*d(t11)/dx0 + X1*d(t11)/dx1) ∂/∂x1⊗dx1" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = M.vector_field() # vector field X\n", "X[:] = (function('X0', latex_name='X^0')(*c_x),\n", " function('X1', latex_name='X^1')(*c_x)) # comp. of X\n", "LtX = t.lie_derivative(X) # Lie derivative L_X(t)\n", "LtX.disp() # show Lie derivative" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For comparison, using (19.31) without simplifications we obtain the following components of\n", " $\\ \\mathcal{L}_Xt\\ \\ $ (in the first row we repeat the general formula)\n", " \n", "$$\n", "\\begin{matrix}\n", "X^p\\frac{\\partial t^{i_1\\ldots i_k}_{j_1\\ldots j_m}}{\\partial x^p}\n", "&\n", "-t^{p\\,i_2\\ldots i_k}_{j_1\\ldots j_m}\\frac{\\partial X^{i_1}}{\\partial x^p}\n", "\\ldots -t^{i_1\\ldots i_{k-1}p}_{j_1\\ldots j_m}\\frac{\\partial X^{i_k}}{\\partial x^p}\n", "&\n", "+t^{i_1\\ldots i_k}_{p\\,j_2\\ldots j_m}\\frac{\\partial X^p}{\\partial x^{j_1}}\n", "+\\ldots +t^{i_1\\ldots i_k}_{j_1\\ldots j_{m-1}\\,p}\\frac{\\partial X^p}{\\partial x^{j_m}}\\\\\n", "X^0\\frac{\\partial t^0_0}{\\partial x^0}+X^1\\frac{\\partial t^0_0}{\\partial x^1}\n", "&\n", "-t^0_0\\frac{\\partial X^0}{\\partial x^0}-t^1_0\\frac{\\partial X^0}{\\partial x^1}\n", "&\n", "+t^0_0\\frac{\\partial X^0}{\\partial x^0}+t^0_1\\frac{\\partial X^1}{\\partial x^0}\\\\\n", "X^0\\frac{\\partial t^0_1}{\\partial x^0}+X^1\\frac{\\partial t^0_1}{\\partial x^1}\n", "&\n", "-t^0_1\\frac{\\partial X^0}{\\partial x^0}-t^1_1\\frac{\\partial X^0}{\\partial x^1}\n", "&\n", "+t^0_0\\frac{\\partial X^0}{\\partial x^1}+t^0_1\\frac{\\partial X^1}{\\partial x^1}\\\\\n", "X^0\\frac{\\partial t^1_0}{\\partial x^0}+X^1\\frac{\\partial t^1_0}{\\partial x^1}\n", "&\n", "-t^0_0\\frac{\\partial X^1}{\\partial x^0}-t^1_0\\frac{\\partial X^1}{\\partial x^1}\n", "&\n", "+t^1_0\\frac{\\partial X^0}{\\partial x^0}+t^1_1\\frac{\\partial X^1}{\\partial x^0}\\\\\n", "X^0\\frac{\\partial t^1_1}{\\partial x^0}+X^1\\frac{\\partial t^1_1}{\\partial x^1}\n", "&\n", "-t^0_1\\frac{\\partial X^1}{\\partial x^0}-t^1_1\\frac{\\partial X^1}{\\partial x^1}\n", "&\n", "+t^1_0\\frac{\\partial X^0}{\\partial x^1}+t^1_1\\frac{\\partial X^1}{\\partial x^1}\n", "\\end{matrix}\n", "$$\n", "\n", "which of course gives the same result.\n", "\n", "Bellow we list the components of the Lie derivative using `display_comp` method:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\\(\\displaystyle \\begin{array}{lcl} X_{\\phantom{\\, 0}\\,0}^{\\,0\\phantom{\\, 0}} & = & -t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t^0_0}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^0_0}{\\partial {x^{1}}} \\\\ X_{\\phantom{\\, 0}\\,1}^{\\,0\\phantom{\\, 1}} & = & -t^0_1 \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + {\\left(t^0_0 - t^1_1\\right)} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t^0_1}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^0_1}{\\partial {x^{1}}} \\\\ X_{\\phantom{\\, 1}\\,0}^{\\,1\\phantom{\\, 0}} & = & t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{0}}} - {\\left(t^0_0 - t^1_1\\right)} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} - t^1_0 \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t^1_0}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^1_0}{\\partial {x^{1}}} \\\\ X_{\\phantom{\\, 1}\\,1}^{\\,1\\phantom{\\, 1}} & = & t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{1}}} - t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t^1_1}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^1_1}{\\partial {x^{1}}} \\end{array}\\)" ], "text/latex": [ "$\\displaystyle \\begin{array}{lcl} X_{\\phantom{\\, 0}\\,0}^{\\,0\\phantom{\\, 0}} & = & -t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t^0_0}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^0_0}{\\partial {x^{1}}} \\\\ X_{\\phantom{\\, 0}\\,1}^{\\,0\\phantom{\\, 1}} & = & -t^0_1 \\frac{\\partial\\,X^0}{\\partial {x^{0}}} + {\\left(t^0_0 - t^1_1\\right)} \\frac{\\partial\\,X^0}{\\partial {x^{1}}} + t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t^0_1}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^0_1}{\\partial {x^{1}}} \\\\ X_{\\phantom{\\, 1}\\,0}^{\\,1\\phantom{\\, 0}} & = & t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{0}}} - {\\left(t^0_0 - t^1_1\\right)} \\frac{\\partial\\,X^1}{\\partial {x^{0}}} - t^1_0 \\frac{\\partial\\,X^1}{\\partial {x^{1}}} + X^0 \\frac{\\partial\\,t^1_0}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^1_0}{\\partial {x^{1}}} \\\\ X_{\\phantom{\\, 1}\\,1}^{\\,1\\phantom{\\, 1}} & = & t^1_0 \\frac{\\partial\\,X^0}{\\partial {x^{1}}} - t^0_1 \\frac{\\partial\\,X^1}{\\partial {x^{0}}} + X^0 \\frac{\\partial\\,t^1_1}{\\partial {x^{0}}} + X^1 \\frac{\\partial\\,t^1_1}{\\partial {x^{1}}} \\end{array}$" ], "text/plain": [ "X^0_0 = -t10*d(X0)/dx1 + t01*d(X1)/dx0 + X0*d(t00)/dx0 + X1*d(t00)/dx1 \n", "X^0_1 = -t01*d(X0)/dx0 + (t00 - t11)*d(X0)/dx1 + t01*d(X1)/dx1 + X0*d(t01)/dx0 + X1*d(t01)/dx1 \n", "X^1_0 = t10*d(X0)/dx0 - (t00 - t11)*d(X1)/dx0 - t10*d(X1)/dx1 + X0*d(t10)/dx0 + X1*d(t10)/dx1 \n", "X^1_1 = t10*d(X0)/dx1 - t01*d(X1)/dx0 + X0*d(t11)/dx0 + X1*d(t11)/dx1 " ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LtX.display_comp(coordinate_labels=False)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "#LtX.comp()[:] # matrix of components" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What's next?\n", "\n", "Take a look at the notebook [Integration of differential forms on singular $k$-cubes](https://nbviewer.org/github/sagemanifolds/IntroToManifolds/blob/main/20Manifold_Stokes.ipynb)." ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.6", "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 }