{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Vector calculus in the Euclidean plane\n",
"\n",
"This notebook illustrates some vector calculus capabilities of SageMath within the 2-dimensional Euclidean space. The corresponding tools have been developed within\n",
"the [SageManifolds](https://sagemanifolds.obspm.fr) project.\n",
"\n",
"Click [here](https://raw.githubusercontent.com/sagemanifolds/SageManifolds/master/Notebooks/SM_Euclidean_plane.ipynb) to download the notebook file (ipynb format). To run it, you must start SageMath with the Jupyter interface, via the command `sage -n jupyter`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*NB:* a version of SageMath at least equal to 8.3 is required to run this notebook:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'SageMath version 8.7, Release Date: 2019-03-23'"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"version()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First we set up the notebook to display math formulas using LaTeX formatting:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%display latex"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Defining the Euclidean plane\n",
"\n",
"We define the Euclidean plane $\\mathbb{E}^2$ as a 2-dimensional Euclidean space, with Cartesian coordinates $(x,y)$:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Euclidean plane E^2\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"Euclidean plane E^2"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E. = EuclideanSpace()\n",
"print(E)\n",
"E"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Thanks to the use of `` in the above command, the Python variables `x` and `y` are assigned to the symbolic variables $x$ and $y$ describing the Cartesian coordinates: "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Instead of using the variables `x` and `y`, one may also access to the coordinates by their indices in the chart of Cartesian coordinates:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Chart (E^2, (x, y))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cartesian = E.cartesian_coordinates()\n",
"cartesian"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"x"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cartesian[1]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"y"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cartesian[2]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y is cartesian[2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Each of the Cartesian coordinates spans the entire real line:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"x: (-oo, +oo); y: (-oo, +oo)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cartesian.coord_range()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Vector fields"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Euclidean plane $\\mathbb{E}^2$ is canonically endowed with the vector frame associated with Cartesian coordinates:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Coordinate frame (E^2, (e_x,e_y))"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E.default_frame()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Vector fields on $\\mathbb{E}^2$ are then defined from their components in that frame:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v = -y e_x + x e_y"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v = E.vector_field(-y, x, name='v')\n",
"v.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The access to individual components is performed by the square bracket operator:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"-y"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v[1]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-y, x]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v[:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A plot of the vector field $v$ (this is with default parameters, see the [list of options](http://doc.sagemath.org/html/en/reference/manifolds/sage/manifolds/differentiable/vectorfield.html#sage.manifolds.differentiable.vectorfield.VectorField.plot) for customizing the plot):"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"Graphics object consisting of 80 graphics primitives"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One may also define a vector field by setting the components in a second stage:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"w = w_x(x, y) e_x + w_y(x, y) e_y"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w = E.vector_field(name='w')\n",
"w[1] = function('w_x')(x,y)\n",
"w[2] = function('w_y')(x,y)\n",
"w.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that in the above example the components of $w$ are unspecified functions of $(x,y)$, contrary to the components of $v$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Standard linear algebra operations are available on vector fields:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(x*w_x(x, y) - 2*y) e_x + (x*w_y(x, y) + 2*x) e_y"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = 2*v + x*w\n",
"s.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Scalar product and norm\n",
"\n",
"The dot (scalar) product of $v$ by $w$ in performed by the operator `dot_product`; it gives rise to a scalar field on $\\mathbb{E}^2$:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Scalar field v.w on the Euclidean plane E^2\n"
]
}
],
"source": [
"s = v.dot_product(w)\n",
"print(s)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A shortcut alias of `dot_product` is `dot`:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s == v.dot(w)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v.w: E^2 --> R\n",
" (x, y) |--> -y*w_x(x, y) + x*w_y(x, y)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The symbolic expression representing the scalar field $v\\cdot w$ is obtained by means of the method `expr()`:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"-y*w_x(x, y) + x*w_y(x, y)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.expr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Euclidean norm of the vector field $v$ is a scalar field on $\\mathbb{E}^2$:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"|v|: E^2 --> R\n",
" (x, y) |--> sqrt(x^2 + y^2)"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = norm(v)\n",
"s.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Again, the corresponding symbolic expression is obtained via `expr()`:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"sqrt(x^2 + y^2)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.expr()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"sqrt(w_x(x, y)^2 + w_y(x, y)^2)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"norm(w).expr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have of course $\\|v\\|^2 = v\\cdot v$ :"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"norm(v)^2 == v.dot(v)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Values at a given point\n",
"\n",
"We introduce a point $p\\in \\mathbb{E}^2$ via the generic SageMath syntax for creating an element from its parent (here $\\mathbb{E}^2$), i.e. the call operator `()`, with the Cartesian coordinates of the point as the first argument:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Point p on the Euclidean plane E^2\n"
]
}
],
"source": [
"p = E((-2,3), name='p')\n",
"print(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The coordinates of $p$ are returned by the method ``coord()``:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(-2, 3)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.coord()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"or by letting the chart `cartesian` act on the point:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(-2, 3)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cartesian(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The value of the scalar field ``s = norm(v)`` at $p$ is"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"sqrt(13)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The value of a vector field at $p$ is obtained by the method `at` (since the call operator `()` is reserved for the action of vector fields on scalar fields, see Section 5 below):"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vector v at Point p on the Euclidean plane E^2\n"
]
}
],
"source": [
"vp = v.at(p)\n",
"print(vp)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v = -3 e_x - 2 e_y"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vp.display()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"w = w_x(-2, 3) e_x + w_y(-2, 3) e_y"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wp = w.at(p)\n",
"wp.display()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(pi*w_x(-2, 3) - 3) e_x + (pi*w_y(-2, 3) - 2) e_y"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = v.at(p) + pi*w.at(p)\n",
"s.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Differential operators\n",
"\n",
"Tu use functional notations, i.e. `div(v)` instead of `v.div()` for the divergence of the vector field `v`, we import the functions `div`, `grad`, etc. in the global namespace:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"from sage.manifolds.operators import *"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Divergence\n",
"\n",
"The divergence of a vector field is returned by the function `div`; the output is a scalar field on $\\mathbb{E}^2$:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Scalar field div(v) on the Euclidean plane E^2\n"
]
}
],
"source": [
"print(div(v))"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"div(v): E^2 --> R\n",
" (x, y) |--> 0"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(v).display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the present case, $\\mathrm{div}\\, v$ vanishes identically:"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(v) == 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On the contrary, the divergence of $w$ is"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"div(w): E^2 --> R\n",
" (x, y) |--> d(w_x)/dx + d(w_y)/dy"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(w).display()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"diff(w_x(x, y), x) + diff(w_y(x, y), y)"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(w).expr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Gradient\n",
"\n",
"The gradient of a scalar field, e.g. `s = norm(v)`, is returned by the function `grad`; the output is a vector field:"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vector field grad(|v|) on the Euclidean plane E^2\n"
]
}
],
"source": [
"s = norm(v)\n",
"print(grad(s))"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"grad(|v|) = x/sqrt(x^2 + y^2) e_x + y/sqrt(x^2 + y^2) e_y"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(s).display()"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"y/sqrt(x^2 + y^2)"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(s)[2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For a generic scalar field"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"F = E.scalar_field(function('f')(x,y), name='F')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we have"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"grad(F) = d(f)/dx e_x + d(f)/dy e_y"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(F).display()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[d(f)/dx, d(f)/dy]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(F)[:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Of course, we may combine `grad` and `div`:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"grad(div(w)) = (d^2(w_x)/dx^2 + d^2(w_y)/dxdy) e_x + (d^2(w_x)/dxdy + d^2(w_y)/dy^2) e_y"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(div(w)).display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Laplace operator\n",
"\n",
"The Laplace operator is obtained by the function `laplacian`; it can act on a scalar field:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Delta(F): E^2 --> R\n",
" (x, y) |--> d^2(f)/dx^2 + d^2(f)/dy^2"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"laplacian(F).display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"as well as on a vector field:"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Delta(w) = (d^2(w_x)/dx^2 + d^2(w_x)/dy^2) e_x + (d^2(w_y)/dx^2 + d^2(w_y)/dy^2) e_y"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"laplacian(w).display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For a scalar field, we have the identity:"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"laplacian(F) == div(grad(F))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Polar coordinates\n",
"\n",
"Polar coordinates $(r,\\phi)$ are introduced on $\\mathbb{E}^2$ by"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Chart (E^2, (r, ph))"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"polar. = E.polar_coordinates()\n",
"polar"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"r: (0, +oo); ph: (0, 2*pi)"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"polar.coord_range()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"They are related to Cartesian coordinates by the following transformations:"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"x = r*cos(ph)\n",
"y = r*sin(ph)"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E.coord_change(polar, cartesian).display()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"r = sqrt(x^2 + y^2)\n",
"ph = arctan2(y, x)"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E.coord_change(cartesian, polar).display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The orthonormal vector frame associated to polar coordinates is"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Vector frame (E^2, (e_r,e_ph))"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"polar_frame = E.polar_frame()\n",
"polar_frame"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"e_r = x/sqrt(x^2 + y^2) e_x + y/sqrt(x^2 + y^2) e_y"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"er = polar_frame[1]\n",
"er.display() # display in the default frame (Cartesian frame) \n",
" # with the default coordinates (Cartesian)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"e_r = cos(ph) e_x + sin(ph) e_y"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"er.display(cartesian.frame(), polar) # display in the Cartesian frame\n",
" # with components expressed in polar coordinates"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"e_ph = -y/sqrt(x^2 + y^2) e_x + x/sqrt(x^2 + y^2) e_y"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eph = polar_frame[2]\n",
"eph.display()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"e_ph = -sin(ph) e_x + cos(ph) e_y"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eph.display(cartesian.frame(), polar)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We may check that $(e_r, e_\\phi)$ is an orthonormal frame:"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([er.dot(er) == 1,\n",
" er.dot(eph) == 0,\n",
" eph.dot(eph) == 1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Scalar fields can be expressed in terms of polar coordinates:"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"F: E^2 --> R\n",
" (x, y) |--> f(x, y)\n",
" (r, ph) |--> f(r*cos(ph), r*sin(ph))"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"F.display()"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"F: E^2 --> R\n",
" (r, ph) |--> f(r*cos(ph), r*sin(ph))"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"F.display(polar)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and we may ask for the components of vector fields in terms of the polar frame:"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v = -y e_x + x e_y"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v.display() # default frame and default coordinates (both Cartesian ones)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v = sqrt(x^2 + y^2) e_ph"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v.display(polar_frame) # polar frame and default coordinates"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v = r e_ph"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v.display(polar_frame, polar) # polar frame and polar coordinates"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"w = w_x(x, y) e_x + w_y(x, y) e_y"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.display()"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"w = (cos(ph)*w_x(r*cos(ph), r*sin(ph)) + sin(ph)*w_y(r*cos(ph), r*sin(ph))) e_r + (-sin(ph)*w_x(r*cos(ph), r*sin(ph)) + cos(ph)*w_y(r*cos(ph), r*sin(ph))) e_ph"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.display(polar_frame, polar)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Gradient in polar coordinates\n",
"\n",
"Let us define a generic scalar field in terms of polar coordinates:"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"H: E^2 --> R\n",
" (r, ph) |--> h(r, ph)"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H = E.scalar_field({polar: function('h')(r,ph)}, name='H')\n",
"H.display(polar)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The gradient of $H$ is then"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"grad(H) = d(h)/dr e_r + d(h)/dph/r e_ph"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(H).display(polar_frame, polar)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To access to individual components is perfomed by the square bracket operator, where, in addition to the index, one has to specify the vector frame and the coordinates if they are not the default ones:"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"grad(H) = (r*cos(ph)*d(h)/dr - sin(ph)*d(h)/dph)/r e_x + (r*sin(ph)*d(h)/dr + cos(ph)*d(h)/dph)/r e_y"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(H).display(cartesian.frame(), polar)"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"d(h)/dph/r"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(H)[polar_frame,2,polar]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Divergence in polar coordinates\n",
"\n",
"Let us define a generic vector field in terms of polar coordinates:"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"u = u_r(r, ph) e_r + u_ph(r, ph) e_ph"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u = E.vector_field(function('u_r')(r,ph),\n",
" function('u_ph', latex_name=r'u_\\phi')(r,ph),\n",
" frame=polar_frame, chart=polar, name='u')\n",
"u.display(polar_frame, polar)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"div(u): E^2 --> R\n",
" (r, ph) |--> (r*d(u_r)/dr + u_r(r, ph) + d(u_ph)/dph)/r"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(u).display(polar)"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(r*diff(u_r(r, ph), r) + u_r(r, ph) + diff(u_ph(r, ph), ph))/r"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(u).expr(polar)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"u_r(r, ph)/r + diff(u_ph(r, ph), ph)/r + diff(u_r(r, ph), r)"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(u).expr(polar).expand()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Using polar coordinates by default:\n",
"\n",
"In order to avoid specifying the arguments `polar_frame` and `polar` in `display()`, `expr()` and `[]`, we may change the default values by"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"E.set_default_chart(polar)\n",
"E.set_default_frame(polar_frame)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then we have"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"u = u_r(r, ph) e_r + u_ph(r, ph) e_ph"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u.display()"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"u_r(r, ph)"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u[1]"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v = r e_ph"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v.display()"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"r"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v[2]"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"w = (cos(ph)*w_x(r*cos(ph), r*sin(ph)) + sin(ph)*w_y(r*cos(ph), r*sin(ph))) e_r + (-sin(ph)*w_x(r*cos(ph), r*sin(ph)) + cos(ph)*w_y(r*cos(ph), r*sin(ph))) e_ph"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.display()"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(r*diff(u_r(r, ph), r) + u_r(r, ph) + diff(u_ph(r, ph), ph))/r"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(u).expr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Advanced topics: the Euclidean plane as a Riemannian manifold\n",
"\n",
"$\\mathbb{E}^2$ is actually a Riemannian manifold, i.e. a smooth real manifold endowed with a positive definite metric tensor:"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Category of smooth manifolds over Real Field with 53 bits of precision"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E.category()"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Category of smooth manifolds over Real Field with 53 bits of precision\n"
]
}
],
"source": [
"print(E.category())"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E.base_field() is RR"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Actually `RR` is used here as a proxy for the real field (this should be replaced in the future, see the discussion at [#24456](https://trac.sagemath.org/ticket/24456)) and the 53 bits of precision play of course no role for the symbolic computations. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The user atlas of $\\mathbb{E}^2$ has two charts:"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[Chart (E^2, (x, y)), Chart (E^2, (r, ph))]"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E.atlas()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"while there are three vector frames defined on $\\mathbb{E}^2$:"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[Coordinate frame (E^2, (e_x,e_y)),\n",
" Coordinate frame (E^2, (d/dr,d/dph)),\n",
" Vector frame (E^2, (e_r,e_ph))]"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E.frames()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Indeed, there are two frames associated with polar coordinates: the coordinate frame $(\\frac{\\partial}{\\partial r}, \\frac{\\partial}{\\partial \\phi})$ and the orthonormal frame $(e_r, e_\\phi)$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Riemannian metric\n",
"\n",
"The default metric tensor of $\\mathbb{E}^2$ is"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Riemannian metric g on the Euclidean plane E^2\n"
]
}
],
"source": [
"g = E.metric()\n",
"print(g)"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"g = e^r*e^r + e^ph*e^ph"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g.display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the above display, $e^r$ and $e^\\phi$ are the 1-forms defining the coframe dual to the orthonormal polar frame $(e_r,e_\\phi)$, which is the default vector frame on $\\mathbb{E}^2$:"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Coframe (E^2, (e^r,e^ph))"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"polar_frame.coframe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Of course, we may ask for display with respect to frames different from the default one:"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"g = dx*dx + dy*dy"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g.display(cartesian.frame())"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"g = dr*dr + r^2 dph*dph"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g.display(polar.frame())"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[1 0]\n",
"[0 1]"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g[:]"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[ 1 0]\n",
"[ 0 r^2]"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g[polar.frame(),:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is a *flat* metric: its (Riemann) curvature tensor is zero: "
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tensor field Riem(g) of type (1,3) on the Euclidean plane E^2\n"
]
}
],
"source": [
"print(g.riemann())"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Riem(g) = 0"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g.riemann().display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The metric $g$ is defining the dot product on $\\mathbb{E}^2$:"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v.dot(w) == g(v,w)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"norm(v) == sqrt(g(v,v))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Vector fields as derivatives"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Vector fields acts as derivative on scalar fields: "
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Scalar field v(F) on the Euclidean plane E^2\n"
]
}
],
"source": [
"print(v(F))"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v(F): E^2 --> R\n",
" (x, y) |--> -y*d(f)/dx + x*d(f)/dy\n",
" (r, ph) |--> -r*sin(ph)*d(f)/d(r*cos(ph)) + r*cos(ph)*d(f)/d(r*sin(ph))"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v(F).display()"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v(F) == v.dot(grad(F))"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1-form dF on the Euclidean plane E^2\n"
]
}
],
"source": [
"dF = F.differential()\n",
"print(dF)"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v(F) == dF(v)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The set $\\mathfrak{X}(\\mathbb{E}^2)$ of all vector fields on $\\mathbb{E}^2$ is a free module of rank 2 over the commutative algebra of smooth scalar fields on $\\mathbb{E}^2$, $C^\\infty(\\mathbb{E}^2)$:"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Free module X(E^2) of vector fields on the Euclidean plane E^2\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"Free module X(E^2) of vector fields on the Euclidean plane E^2"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"XE = v.parent()\n",
"print(XE)\n",
"XE"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Category of finite dimensional modules over Algebra of differentiable scalar fields on the Euclidean plane E^2\n"
]
}
],
"source": [
"print(XE.category())"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Algebra of differentiable scalar fields on the Euclidean plane E^2\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"Algebra of differentiable scalar fields on the Euclidean plane E^2"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(XE.base_ring())\n",
"XE.base_ring()"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Algebra of differentiable scalar fields on the Euclidean plane E^2"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"CE = F.parent()\n",
"CE"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"CE is XE.base_ring()"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Category of commutative algebras over Symbolic Ring\n"
]
}
],
"source": [
"print(CE.category())"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"2"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rank(XE)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The bases of the free module $\\mathfrak{X}(\\mathbb{E}^2)$ are nothing but the vector frames defined on $\\mathbb{E}^2$:"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[Coordinate frame (E^2, (e_x,e_y)),\n",
" Coordinate frame (E^2, (d/dr,d/dph)),\n",
" Vector frame (E^2, (e_r,e_ph))]"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"XE.bases()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tangent spaces"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Vector fields evaluated at a point are vectors in the tangent space at this point:"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"v = -3 e_x - 2 e_y"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vp = v.at(p)\n",
"vp.display()"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tangent space at Point p on the Euclidean plane E^2\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"Tangent space at Point p on the Euclidean plane E^2"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Tp = vp.parent()\n",
"print(Tp)\n",
"Tp"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Category of finite dimensional vector spaces over Symbolic Ring\n"
]
}
],
"source": [
"print(Tp.category())"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"2"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dim(Tp)"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"isinstance(Tp, FiniteRankFreeModule)"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[Basis (d/dr,d/dph) on the Tangent space at Point p on the Euclidean plane E^2,\n",
" Basis (e_r,e_ph) on the Tangent space at Point p on the Euclidean plane E^2,\n",
" Basis (e_x,e_y) on the Tangent space at Point p on the Euclidean plane E^2]"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted(Tp.bases(), key=str)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Levi-Civita connection\n",
"\n",
"The Levi-Civita connection associated to the Euclidean metric $g$ is"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Levi-Civita connection nabla_g associated with the Riemannian metric g on the Euclidean plane E^2\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"Levi-Civita connection nabla_g associated with the Riemannian metric g on the Euclidean plane E^2"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nabla = g.connection()\n",
"print(nabla)\n",
"nabla"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The corresponding Christoffel symbols with respect to the polar coordinates are:"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Gam^r_ph,ph = -r \n",
"Gam^ph_r,ph = 1/r "
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g.christoffel_symbols_display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By default, only nonzero and nonredundant values are displayed (for instance $\\Gamma^\\phi_{\\ \\, \\phi r}$ is skipped, since it can be deduced from $\\Gamma^\\phi_{\\ \\, r \\phi}$ by symmetry on the last two indices).\n",
"\n",
"The Christoffel symbols with respect to the Cartesian coordinates are all zero: "
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Gam^x_xx = 0 \n",
"Gam^x_xy = 0 \n",
"Gam^x_yy = 0 \n",
"Gam^y_xx = 0 \n",
"Gam^y_xy = 0 \n",
"Gam^y_yy = 0 "
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g.christoffel_symbols_display(chart=cartesian, only_nonzero=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$\\nabla_g$ is the connection involved in differential operators:"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grad(F) == nabla(F).up(g)"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 120,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nabla(F) == grad(F).down(g)"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(v) == nabla(v).trace()"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"div(w) == nabla(w).trace()"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 123,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"laplacian(F) == nabla(nabla(F).up(g)).trace()"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"laplacian(w) == nabla(nabla(w).up(g)).trace(1,2)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "SageMath 8.7",
"language": "",
"name": "sagemath"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.15"
}
},
"nbformat": 4,
"nbformat_minor": 2
}