{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"# 3-sphere: vector fields and left-invariant parallelization\n",
"\n",
"This worksheet demonstrates some differential geometry capabilities of SageMath on the example of the 3-dimensional sphere, $\\mathbb{S}^3$. The corresponding tools have been developed within the [SageManifolds](http://sagemanifolds.obspm.fr) project (version 1.1, as included in SageMath 8.1).\n",
"\n",
"Click [here](https://raw.githubusercontent.com/sagemanifolds/SageManifolds/master/Worksheets/v1.1/SM_sphere_S3_vectors.ipynb) to download the worksheet file (ipynb format). To run it, you must start SageMath with the Jupyter notebook, via the command `sage -n jupyter`"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"*NB:* a version of SageMath at least equal to 7.5 is required to run this worksheet:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"'SageMath version 8.1.rc0, Release Date: 2017-11-08'"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"version()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"First we set up the notebook to display mathematical objects using LaTeX formatting:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"%display latex"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We also define a viewer for 3D plots (use `'threejs'` or `'jmol'` for interactive 3D graphics):"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"viewer3D = 'threejs' # must be 'threejs', jmol', 'tachyon' or None (default)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"To increase the computational speed, we ask for demanding computations to be parallelly performed on 8 cores:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"Parallelism().set(nproc=8)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## $\\mathbb{S}^3$ as a 3-dimensional differentiable manifold\n",
"\n",
"We start by declaring $\\mathbb{S}^3$ as a differentiable manifold of dimension 3 over $\\mathbb{R}$:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"S3 = Manifold(3, 'S^3', latex_name=r'\\mathbb{S}^3', start_index=1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The first argument, `3`, is the dimension of the manifold, while the second argument is the symbol used to label the manifold, with the LaTeX output specified by the argument `latex_name`. The argument `start_index` sets the index range to be used on the manifold for labelling components w.r.t. a basis or a frame: `start_index=1` corresponds to $\\{1,2,3\\}$; the default value is `start_index=0`, yielding to $\\{0,1,2\\}$."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3-dimensional differentiable manifold S^3\n"
]
}
],
"source": [
"print(S3)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"3-dimensional differentiable manifold S^3"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S3"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Coordinate charts on $\\mathbb{S}^3$\n",
"\n",
"The 3-sphere cannot be covered by a single chart. At least two charts are necessary, for instance the charts associated with the stereographic projections from two distinct points, $N$ and $S$ say,\n",
"which we may call the *North pole* and the *South pole* respectively. Let us introduce the open subsets covered by these two charts: \n",
"$$ U := \\mathbb{S}^3\\setminus\\{N\\} $$ \n",
"$$ V := \\mathbb{S}^3\\setminus\\{S\\} $$"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Open subset U of the 3-dimensional differentiable manifold S^3\n"
]
}
],
"source": [
"U = S3.open_subset('U') ; print(U)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Open subset V of the 3-dimensional differentiable manifold S^3\n"
]
}
],
"source": [
"V = S3.open_subset('V') ; print(V)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We declare that $\\mathbb{S}^3 = U \\cup V$:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"S3.declare_union(U, V)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"source": [
"Then we introduce the stereographic chart on $U$, denoting by $(x,y,z)$ the coordinates resulting from the stereographic projection from the North pole onto the equatorial plane:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Chart (U, (x, y, z))"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoN. = U.chart()\n",
"stereoN"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"x: (-oo, +oo); y: (-oo, +oo); z: (-oo, +oo)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoN.coord_range()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Similarly, we introduce on $V$ the coordinates $(x',y',z')$ corresponding to the stereographic projection from the South pole onto the equatorial plane:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Chart (V, (xp, yp, zp))"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoS. = V.chart(\"xp:x' yp:y' zp:z'\")\n",
"stereoS"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"xp: (-oo, +oo); yp: (-oo, +oo); zp: (-oo, +oo)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoS.coord_range()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We have to specify the **transition map** between the charts `stereoN` = $(U,(x,y,z))$ and `stereoS` = $(V,(x',y',z'))$; it is given by the standard inversion formulas:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"xp = x/(x^2 + y^2 + z^2)\n",
"yp = y/(x^2 + y^2 + z^2)\n",
"zp = z/(x^2 + y^2 + z^2)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r2 = x^2+y^2+z^2\n",
"stereoN_to_S = stereoN.transition_map(stereoS, \n",
" (x/r2, y/r2, z/r2), \n",
" intersection_name='W',\n",
" restrictions1= x^2+y^2+z^2!=0, \n",
" restrictions2= xp^2+yp^2+zp^2!=0)\n",
"stereoN_to_S.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"In the above declaration, `'W'` is the name given to the open subset where the two charts overlap: $W := U\\cap V$, the condition $x^2+y^2+z^2\\not=0$ defines $W$ as a subset of $U$, and the condition $x'^2+y'^2+z'^2\\not=0$ defines $W$ as a subset of $V$.\n",
"\n",
"The inverse coordinate transformation is computed by means of the method `inverse()`:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"x = xp/(xp^2 + yp^2 + zp^2)\n",
"y = yp/(xp^2 + yp^2 + zp^2)\n",
"z = zp/(xp^2 + yp^2 + zp^2)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoS_to_N = stereoN_to_S.inverse()\n",
"stereoS_to_N.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Note that the situation is of course perfectly symmetric regarding the coordinates $(x,y,z)$ and $(x',y',z')$.\n",
"\n",
"At this stage, the user's atlas has four charts:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[Chart (U, (x, y, z)),\n",
" Chart (V, (xp, yp, zp)),\n",
" Chart (W, (x, y, z)),\n",
" Chart (W, (xp, yp, zp))]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S3.atlas()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"For future reference, we store $W=U\\cap V$ into a Python variable:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Open subset W of the 3-dimensional differentiable manifold S^3\n"
]
}
],
"source": [
"W = U.intersection(V)\n",
"print(W)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### The North and South poles\n",
"\n",
"$N$ is the point of $V$ of stereographic coordinates $(x',y',z')=(0,0,0)$:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Point N on the 3-dimensional differentiable manifold S^3\n"
]
}
],
"source": [
"N = V((0,0,0), chart=stereoS, name='N')\n",
"print(N)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"while $S$ is the point of $U$ of stereographic coordinates $(x,y,z)=(0,0,0)$:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Point S on the 3-dimensional differentiable manifold S^3\n"
]
}
],
"source": [
"S = U((0,0,0), chart=stereoN, name='S')\n",
"print(S)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We have of course"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([N not in U, N in V, S in U, S not in V])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Embedding of $\\mathbb{S}^3$ into $\\mathbb{R}^4$\n",
"\n",
"Let us first declare $\\mathbb{R}^4$ as a 4-dimensional manifold covered by a single chart (the so-called **Cartesian coordinates**):"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Chart (R^4, (T, X, Y, Z))"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"R4 = Manifold(4, 'R^4', r'\\mathbb{R}^4')\n",
"X4. = R4.chart()\n",
"X4"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The embedding of $\\mathbb{S}^3$ into $\\mathbb{R}^4$ is then defined by the standard formulas relating the stereographic coordinates to the ambient Cartesian ones when considering a **stereographic projection** from the point $(-1,0,0,0)$ to the equatorial plane $T=0$:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Phi: S^3 --> R^4\n",
"on U: (x, y, z) |--> (T, X, Y, Z) = (-(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 + 1), 2*x/(x^2 + y^2 + z^2 + 1), 2*y/(x^2 + y^2 + z^2 + 1), 2*z/(x^2 + y^2 + z^2 + 1))\n",
"on V: (xp, yp, zp) |--> (T, X, Y, Z) = ((xp^2 + yp^2 + zp^2 - 1)/(xp^2 + yp^2 + zp^2 + 1), 2*xp/(xp^2 + yp^2 + zp^2 + 1), 2*yp/(xp^2 + yp^2 + zp^2 + 1), 2*zp/(xp^2 + yp^2 + zp^2 + 1))"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rp2 = xp^2 + yp^2 + zp^2\n",
"Phi = S3.diff_map(R4, {(stereoN, X4): \n",
" [(1-r2)/(r2+1), 2*x/(r2+1), \n",
" 2*y/(r2+1), 2*z/(r2+1)],\n",
" (stereoS, X4):\n",
" [(rp2-1)/(rp2+1), 2*xp/(rp2+1), \n",
" 2*yp/(rp2+1), 2*zp/(rp2+1)]},\n",
" name='Phi', latex_name=r'\\Phi')\n",
"Phi.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"With this choice of stereographic projection, the \"North\" pole is actually the point of coordinates $(-1,0,0,0)$ in $\\mathbb{R}^4$:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(-1, 0, 0, 0)"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X4(Phi(N))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"while the \"South\" pole is the point of coordinates $(1,0,0,0)$:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(1, 0, 0, 0)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X4(Phi(S))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Hyperspherical coordinates\n",
"\n",
"The hyperspherical coordinates $(\\chi, \\theta, \\phi)$ generalize the standard spherical coordinates $(\\theta, \\phi)$ on $\\mathbb{S}^2$. They are defined on the open domain $A\\subset W \\subset \\mathbb{S}^3$ that is the complement of the \"origin meridian\"; since the latter is defined by $y=0$ and $x\\geq 0$, we declare:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Open subset A of the 3-dimensional differentiable manifold S^3\n"
]
}
],
"source": [
"A = W.open_subset('A', coord_def={stereoN.restrict(W): (y!=0, x<0), \n",
" stereoS.restrict(W): (yp!=0, xp<0)})\n",
"print(A)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We then declare the chart $(A,(\\chi,\\theta,\\phi))$ by specifying the intervals spanned by the various coordinates:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Chart (A, (ch, th, ph))"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spher. = A.chart(r'ch:(0,pi):\\chi th:(0,pi):\\theta ph:(0,2*pi):\\phi')\n",
"spher"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"ch: (0, pi); th: (0, pi); ph: (0, 2*pi)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spher.coord_range()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The specification of the hyperspherical coordinates is completed by providing the transition map to the stereographic chart $(A,(x,y,z))$:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"x = cos(ph)*sin(ch)*sin(th)/(cos(ch) + 1)\n",
"y = sin(ch)*sin(ph)*sin(th)/(cos(ch) + 1)\n",
"z = cos(th)*sin(ch)/(cos(ch) + 1)"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"den = 1 + cos(ch)\n",
"spher_to_stereoN = spher.transition_map(stereoN.restrict(A), \n",
" (sin(ch)*sin(th)*cos(ph)/den,\n",
" sin(ch)*sin(th)*sin(ph)/den,\n",
" sin(ch)*cos(th)/den))\n",
"spher_to_stereoN.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We also provide the inverse transition map, asking to check that the provided formulas are indeed correct (argument `verbose=True`):"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Check of the inverse coordinate transformation:\n",
" ch == 2*arctan(sqrt(-cos(ch) + 1)/sqrt(cos(ch) + 1))\n",
" th == arctan2(sqrt(-cos(ch) + 1)*sin(th)/sqrt(cos(ch) + 1), cos(th)*sin(ch)/(cos(ch) + 1))\n",
" ph == pi - arctan2(sin(ch)*sin(ph)*sin(th)/(cos(ch) + 1), -cos(ph)*sin(ch)*sin(th)/(cos(ch) + 1))\n",
" x == x\n",
" y == y\n",
" z == z\n"
]
}
],
"source": [
"spher_to_stereoN.set_inverse(2*atan(sqrt(x^2+y^2+z^2)),\n",
" atan2(sqrt(x^2+y^2), z),\n",
" atan2(-y, -x)+pi,\n",
" verbose=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The check is passed, modulo some lack of trigonometric simplifications in the first three lines."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"ch = 2*arctan(sqrt(x^2 + y^2 + z^2))\n",
"th = arctan2(sqrt(x^2 + y^2), z)\n",
"ph = pi + arctan2(-y, -x)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spher_to_stereoN.inverse().display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The transition map $(A,(\\chi,\\theta,\\phi))\\rightarrow (A,(x',y',z'))$ is obtained by combining the transition maps $(A,(\\chi,\\theta,\\phi))\\rightarrow (A,(x,y,z))$ and $(A,(x,y,z))\\rightarrow (A,(x',y',z'))$:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"xp = (cos(ch) + 1)*cos(ph)*sin(th)/sin(ch)\n",
"yp = (cos(ch) + 1)*sin(ph)*sin(th)/sin(ch)\n",
"zp = (cos(ch) + 1)*cos(th)/sin(ch)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spher_to_stereoS = stereoN_to_S.restrict(A) * spher_to_stereoN\n",
"spher_to_stereoS.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Similarly, the transition map $(A,(x',y',z'))\\rightarrow (A,(\\chi,\\theta,\\phi))$ is obtained by combining the transition maps $(A,(x',y',z'))\\rightarrow (A,(x,y,z))$ and $(A,(x,y,z))\\rightarrow (A,(\\chi,\\theta,\\phi))$:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"ch = 2*arctan(1/sqrt(xp^2 + yp^2 + zp^2))\n",
"th = arctan2(sqrt(xp^2 + yp^2)/(xp^2 + yp^2 + zp^2), zp/(xp^2 + yp^2 + zp^2))\n",
"ph = pi - arctan2(yp/(xp^2 + yp^2 + zp^2), -xp/(xp^2 + yp^2 + zp^2))"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoS_to_spher = spher_to_stereoN.inverse() * stereoS_to_N.restrict(A)\n",
"stereoS_to_spher.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"At this stage, the user atlas of $\\mathbb{S}^3$ is"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[Chart (U, (x, y, z)),\n",
" Chart (V, (xp, yp, zp)),\n",
" Chart (W, (x, y, z)),\n",
" Chart (W, (xp, yp, zp)),\n",
" Chart (A, (x, y, z)),\n",
" Chart (A, (xp, yp, zp)),\n",
" Chart (A, (ch, th, ph))]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S3.atlas()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us get the coordinate expression of the restriction of the embedding $\\Phi$ to $A$:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Phi: S^3 --> R^4\n",
"on A: (x, y, z) |--> (T, X, Y, Z) = (-(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 + 1), 2*x/(x^2 + y^2 + z^2 + 1), 2*y/(x^2 + y^2 + z^2 + 1), 2*z/(x^2 + y^2 + z^2 + 1))"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Phi.display(stereoN.restrict(A), X4)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Phi: S^3 --> R^4\n",
"on A: (ch, th, ph) |--> (T, X, Y, Z) = (cos(ch), cos(ph)*sin(ch)*sin(th), sin(ch)*sin(ph)*sin(th), cos(th)*sin(ch))"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Phi.display(spher, X4)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Phi: S^3 --> R^4\n",
"on U: (x, y, z) |--> (T, X, Y, Z) = (-(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 + 1), 2*x/(x^2 + y^2 + z^2 + 1), 2*y/(x^2 + y^2 + z^2 + 1), 2*z/(x^2 + y^2 + z^2 + 1))\n",
"on V: (xp, yp, zp) |--> (T, X, Y, Z) = ((xp^2 + yp^2 + zp^2 - 1)/(xp^2 + yp^2 + zp^2 + 1), 2*xp/(xp^2 + yp^2 + zp^2 + 1), 2*yp/(xp^2 + yp^2 + zp^2 + 1), 2*zp/(xp^2 + yp^2 + zp^2 + 1))\n",
"on A: (ch, th, ph) |--> (T, X, Y, Z) = (cos(ch), cos(ph)*sin(ch)*sin(th), sin(ch)*sin(ph)*sin(th), cos(th)*sin(ch))"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Phi.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Projections from $\\mathbb{R}^4$ to $\\mathbb{S}^3$\n",
"\n",
"We will need some projection operators from (a subset of) $\\mathbb{R}^4$ to $\\mathbb{S}^3$.\n",
"\n",
"First, let $\\mathbb{R}^4_N$ be $\\mathbb{R}^4$ minus the hyperplane $T=-1$:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"R4N = R4.open_subset('R4N', latex_name=r'\\mathbb{R}^4_N', \n",
" coord_def={X4: T!=-1})\n",
"X4N = X4.restrict(R4N)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"and let us consider the following projection $\\Pi_N: \\mathbb{R}^4_N \\to U\\subset\\mathbb{S}^3$:"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"P_N: R4N --> U\n",
" (T, X, Y, Z) |--> (x, y, z) = (X/(T + 1), Y/(T + 1), Z/(T + 1))"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ProjN = R4N.diff_map(U, {(X4N, stereoN): \n",
" [X/(1+T), Y/(1+T), Z/(1+T)]},\n",
" name='P_N', latex_name=r'\\Pi_N')\n",
"ProjN.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Similarly, let $\\mathbb{R}^4_S$ be $\\mathbb{R}^4$ minus the hyperplane $T=1$ and $\\Pi_S$ the \n",
"following projection $\\mathbb{R}_S\\to V\\subset \\mathbb{S}^3$:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"R4S = R4.open_subset('R4S', latex_name=r'\\mathbb{R}^4_S', \n",
" coord_def={X4: T!=1})\n",
"X4S = X4.restrict(R4S)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"P_S: R4S --> V\n",
" (T, X, Y, Z) |--> (xp, yp, zp) = (-X/(T - 1), -Y/(T - 1), -Z/(T - 1))"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ProjS = R4S.diff_map(V, {(X4S, stereoS): \n",
" [X/(1-T), Y/(1-T), Z/(1-T)]},\n",
" name='P_S', latex_name=r'\\Pi_S')\n",
"ProjS.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us check that once applied to an embedded point of $U\\cap V\\subset \\mathbb{S}^3$, this projection reduces to the identity:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(a^2 + 1, b, c)"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"var('a b c', domain='real')\n",
"p = S3((1+a^2,b,c), chart=stereoN)\n",
"stereoN(p)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([p in U, p in V])"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([ProjN(Phi(p)) == p, ProjS(Phi(p)) == p])"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = S3((1+a^2,b,c), chart=stereoS)\n",
"all([ProjN(Phi(p)) == p, ProjS(Phi(p)) == p])"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(1/2*sqrt(3), 1/2*cos(b)*sin(a), 1/2*sin(a)*sin(b), 1/2*cos(a))"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q = R4((sqrt(3)/2, sin(a)*cos(b)/2, sin(a)*sin(b)/2, cos(a)/2))\n",
"X4(q)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([q in R4N, q in R4S])"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"False"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([Phi(ProjN(q)) == q, Phi(ProjS(q)) == q])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Quaternions"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We consider the (division) algebra of quaternions $\\mathbb{H}$ as $\\mathbb{R}^4$ endowed with the following (non-commutative) product:"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def qprod(p,q):\n",
" if p in R4 and q in R4:\n",
" T1, X1, Y1, Z1 = X4(p)\n",
" T2, X2, Y2, Z2 = X4(q)\n",
" return R4(((T1*T2-X1*X2-Y1*Y2-Z1*Z2).simplify_full(),\n",
" (T1*X2+X1*T2+Y1*Z2-Z1*Y2).simplify_full(),\n",
" (T1*Y2-X1*Z2+Y1*T2+Z1*X2).simplify_full(),\n",
" (T1*Z2+X1*Y2-Y1*X2+Z1*T2).simplify_full()))\n",
" if p in S3 and q in S3:\n",
" a = qprod(Phi(p),Phi(q))\n",
" if X4(a) == (-1,0,0,0):\n",
" return N\n",
" return ProjN(R4N(a))\n",
" raise ValueError(\"Cannot evaluate qprod of {} and {}\".format(p,q))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Note that we have extended the definition of the quaternionic product to $\\mathbb{S}^3$ via the embedding $\\Phi$. \n",
"\n",
"### Distinguished quaternions on $\\mathbb{S}^3$\n",
"\n",
"Let us introduce two special points on $\\mathbb{S}^3$: $\\mathbf{1}$ and $-\\mathbf{1}$."
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(1, 0, 0, 0)"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"One = S3((0,0,0), chart=stereoN, name='1', latex_name=r'\\mathbf{1}')\n",
"X4(Phi(One))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"As we can see from the Cartesian coordinates of $\\Phi(\\mathbf{1})$, the point $\\mathbf{1}$ is actually nothing but the \"South\" pole used to define the stereographic chart $(V,(x',y',z'))$:"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"One == S"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(-1, 0, 0, 0)"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minusOne = S3((0,0,0), chart=stereoS, name='-1', latex_name=r'-\\mathbf{1}')\n",
"X4(Phi(minusOne))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The point $\\mathbf{-1}$ is thus nothing but the \"North\" pole used to define the stereographic chart $(U,(x,y,z))$:"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minusOne == N"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Next we introduce the points $\\mathbf{i}$, $\\mathbf{j}$ and $\\mathbf{k}$ on $\\mathbb{S}^3$:"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(0, 1, 0, 0)"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"I = S3((1,0,0), chart=stereoN, name='i', latex_name=r'\\mathbf{i}')\n",
"X4(Phi(I))"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(1, 0, 0)"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoS(I)"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(0, 0, 1, 0)"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"J = S3((0,1,0), chart=stereoN, name='j', latex_name=r'\\mathbf{j}')\n",
"X4(Phi(J))"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(0, 1, 0)"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoS(J)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Since $\\mathbf{j}$ lies in $A$, contrary to $\\mathbf{i}$, we may ask for its hyperspherical coordinates:"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(1/2*pi, 1/2*pi, 1/2*pi)"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spher(J)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(0, 0, 0, 1)"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"K = S3((0,0,1), chart=stereoN, name='k', latex_name=r'\\mathbf{k}')\n",
"X4(Phi(K))"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(0, 0, 1)"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stereoS(K)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Hamilton's fundamental relations\n",
"$$ \\mathbf{i} \\mathbf{j} \\mathbf{k} = \\mathbf{-1} $$\n",
"$$ \\mathbf{i} \\mathbf{j} = \\mathbf{k},\\quad \\mathbf{j} \\mathbf{k} = \\mathbf{i}, \\quad \\mathbf{k} \\mathbf{i} = \\mathbf{j}$$\n",
"are satisfied:"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qprod(I, qprod(J,K)) == minusOne"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([qprod(I,J) == K, qprod(J,K) == I,\n",
" qprod(K,I) == J])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"These relations imply $\\mathbf{i}^2 = \\mathbf{-1}$, $\\mathbf{j}^2 = \\mathbf{-1}$ and $\\mathbf{k}^2 = \\mathbf{-1}$:"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([qprod(One,One) == One, qprod(I,I) == minusOne,\n",
" qprod(J,J) == minusOne, qprod(K,K) == minusOne])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us introduce $\\mathbf{-i}$, $\\mathbf{-j}$ and $\\mathbf{-k}$, as points of $\\mathbb{S}^3$:"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(0, -1, 0, 0)"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minusI = qprod(minusOne, I)\n",
"X4(Phi(minusI))"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(0, 0, -1, 0)"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minusJ = qprod(minusOne, J)\n",
"X4(Phi(minusJ))"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(0, 0, 0, -1)"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minusK = qprod(minusOne, K)\n",
"X4(Phi(minusK))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Quaternionic conjugation"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"In the comments below (but not in the SageMath code), we shall identify $\\mathbf{1}\\in \\mathbb{S}^3$ with $\\Phi(\\mathbf{1})\\in \\mathbb{R}^4$, $\\mathbf{i}\\in \\mathbb{S}^3$ with $\\Phi(\\mathbf{i})\\in \\mathbb{R}^4$, etc. In particular, we consider $(\\mathbf{1}, \\mathbf{i}, \\mathbf{j},\\mathbf{k})$ as a basis of the quaternion algebra $\\mathbb{H}$. \n",
"\n",
"The *conjugate* of a quaternion $q = T + X\\mathbf{i} + Y\\mathbf{j} + Z\\mathbf{k}$ is $\\bar{q} = T - X\\mathbf{i} - Y\\mathbf{j} - Z\\mathbf{k}$; hence we define:\n"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def qconj(p):\n",
" if p in R4:\n",
" T, X, Y, Z = X4(p)\n",
" return R4((T, -X, -Y, -Z))\n",
" if p in S3:\n",
" a = qconj(Phi(p))\n",
" if X4(a) == (-1,0,0,0):\n",
" return N\n",
" return ProjN(a)\n",
" raise ValueError(\"Cannot evaluate qconf of {}\".format(p)) "
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"In particular, we have $\\bar{\\mathbf{1}} = \\mathbf{1}$, $\\bar{\\mathbf{i}} = -\\mathbf{i}$, $\\bar{\\mathbf{j}} = -\\mathbf{j}$ and $\\bar{\\mathbf{k}} = -\\mathbf{k}$:"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([qconj(One) == One, \n",
" qconj(I) == minusI,\n",
" qconj(J) == minusJ, \n",
" qconj(K) == minusK])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The conjugate of an element of $\\mathbb{S}^3$"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(-a, -b, -c)"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"assume(a != 0) # to ensure that qconj(p) is not N\n",
"p = S3((a,b,c), chart=stereoN)\n",
"stereoN(qconj(p))"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(-a, -b, -c)"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = S3((a,b,c), chart=stereoS)\n",
"stereoS(qconj(p))"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"forget(a!=0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Norm of a quaternion\n",
"\n",
"The quaternionic norm $\\| q\\| = \\sqrt{q\\bar{q}}$ coincide with the Euclidean norm in $\\mathbb{R}^4$, so that $\\mathbb{S}^3$ can be viewed as the set of unit quaternions; hence we define:"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def qnorm(p):\n",
" if p in R4:\n",
" T, X, Y, Z = X4(p)\n",
" return (sqrt(T^2 + X^2 + Y^2 + Z^2)).simplify_full()\n",
" if p in S3:\n",
" return 1\n",
" raise ValueError(\"Cannot evaluate qnorm of {}\".format(p)) "
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"sqrt(a^2 + b^2 + c^2 + d^2)"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"var('d', domain='real')\n",
"q = R4((a,b,c,d))\n",
"qnorm(q)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us check that $\\| q\\|^2 = q\\bar{q}$:"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"R4((qnorm(q)^2,0,0,0)) == qprod(q, qconj(q))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"As elements of $\\mathbb{S}^3$, $\\mathbf{1}$, $\\mathbf{i}$, $\\mathbf{j}$ and $\\mathbf{k}$ have all unit norm:"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(qnorm(One), qnorm(I), qnorm(J), qnorm(K)) == (1, 1, 1, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Lie group structure"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Right translation by $\\mathbf{i}$\n",
"\n",
"The right translation by $\\mathbf{i}$ is the map $\\bar{R}_{\\mathbf{i}}: p \\mapsto p \\mathbf{i}$. We define it first at the level of $\\mathbb{R}^4$:"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"R^4 --> R^4\n",
" (T, X, Y, Z) |--> (-X, T, Z, -Y)"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = R4((T,X,Y,Z))\n",
"RI_R4 = R4.diff_map(R4, X4(qprod(p, Phi(I))))\n",
"RI_R4.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Focusing on its action on $\\mathbb{S}^3$, we consider then the map ${\\bar R}_{\\mathbf{i}}\\circ\\Phi$:"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"S^3 --> R^4\n",
"on U: (x, y, z) |--> (T, X, Y, Z) = (-2*x/(x^2 + y^2 + z^2 + 1), -(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 + 1), 2*z/(x^2 + y^2 + z^2 + 1), -2*y/(x^2 + y^2 + z^2 + 1))\n",
"on V: (xp, yp, zp) |--> (T, X, Y, Z) = (-2*xp/(xp^2 + yp^2 + zp^2 + 1), (xp^2 + yp^2 + zp^2 - 1)/(xp^2 + yp^2 + zp^2 + 1), 2*zp/(xp^2 + yp^2 + zp^2 + 1), -2*yp/(xp^2 + yp^2 + zp^2 + 1))\n",
"on A: (ch, th, ph) |--> (T, X, Y, Z) = (-cos(ph)*sin(ch)*sin(th), cos(ch), cos(th)*sin(ch), -sin(ch)*sin(ph)*sin(th))"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RI_S3_R4 = RI_R4 * Phi\n",
"RI_S3_R4.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let $U_{\\mathbf{i}} := U \\setminus \\{\\mathbf{i}\\}$; since the coordinates of $\\mathbf{i}$ in the chart $(U,(x,y,z))$ are $(1,0,0)$, we declare $U_{\\mathbf{i}}$ as"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"UI = U.open_subset('U_I', latex_name=r'U_{\\mathbf{i}}',\n",
" coord_def={stereoN: (x!=1, y!=0, z!=0)})"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"If we restrict $R_{\\mathbf{i}}\\circ\\Phi$ to $U_{\\mathbf{i}}$ the codomain can be taken to be $\\mathbb{R}^4_N$ since $\\mathbf{i}$ is the only point of $\\mathbb{S}^3$ for which $T(R_{\\mathbf{i}}(p)) = -1$. Hence we may apply the operator $\\Pi_N$ to define the right translation by $\\mathbf{i}$ as a map $U_{\\mathbf{i}}\\to U$:"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"U_I --> U\n",
" (x, y, z) |--> (x, y, z) = (-(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 - 2*x + 1), 2*z/(x^2 + y^2 + z^2 - 2*x + 1), -2*y/(x^2 + y^2 + z^2 - 2*x + 1))"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RI_UI = ProjN * RI_S3_R4.restrict(UI, subcodomain=R4N)\n",
"RI_UI.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Similarly, if we restrict $R_{\\mathbf{i}}\\circ\\Phi$ to $V_{-\\mathbf{i}} := V \\setminus\\{-\\mathbf{i}\\}$, we get a map $V_{-\\mathbf{i}} \\to \\mathbb{R}^4_{S}$, so that composing by $\\Pi_S$, the right translation by $\\mathbf{i}$ becomes a map $V_{-\\mathbf{i}}\\to V$:"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"V_mI --> V\n",
" (xp, yp, zp) |--> (xp, yp, zp) = ((xp^2 + yp^2 + zp^2 - 1)/(xp^2 + yp^2 + zp^2 + 2*xp + 1), 2*zp/(xp^2 + yp^2 + zp^2 + 2*xp + 1), -2*yp/(xp^2 + yp^2 + zp^2 + 2*xp + 1))"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"VmI = V.open_subset('V_mI', latex_name=r'V_{-\\mathbf{i}}',\n",
" coord_def={stereoS: (xp!=-1, yp!=0, zp!=0)})\n",
"RI_VmI = ProjS * RI_S3_R4.restrict(VmI, subcodomain=R4S)\n",
"RI_VmI.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We note that $\\mathbb{S}^3 = U_{\\mathbf{i}} \\cup V_{-\\mathbf{i}}$:"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"S3.declare_union(UI, VmI)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Consequently, we can define the right translation by $\\mathbf{i}$ as a map \n",
"$R_{\\mathbf{i}}: \\mathbb{S}^3\\to \\mathbb{S}^3$ by providing the coordinate expressions obtained above on $U_{\\mathbf{i}}$ and $V_{-\\mathbf{i}}$: "
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"RI = S3.diff_map(S3, name='R_I', latex_name=r'{R_{\\mathbf{i}}}')\n",
"RI.add_expression(stereoN.restrict(UI), stereoN, \n",
" RI_UI.expr(stereoN.restrict(UI), stereoN))\n",
"RI.add_expression(stereoS.restrict(VmI), stereoS, \n",
" RI_VmI.expr(stereoS.restrict(VmI), stereoS))"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"R_I: S^3 --> S^3\n",
"on U_I: (x, y, z) |--> (x, y, z) = (-(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 - 2*x + 1), 2*z/(x^2 + y^2 + z^2 - 2*x + 1), -2*y/(x^2 + y^2 + z^2 - 2*x + 1))"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RI.display(stereoN.restrict(UI), stereoN)"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"R_I: S^3 --> S^3\n",
"on V_mI: (xp, yp, zp) |--> (xp, yp, zp) = ((xp^2 + yp^2 + zp^2 - 1)/(xp^2 + yp^2 + zp^2 + 2*xp + 1), 2*zp/(xp^2 + yp^2 + zp^2 + 2*xp + 1), -2*yp/(xp^2 + yp^2 + zp^2 + 2*xp + 1))"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RI.display(stereoS.restrict(VmI), stereoS)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us check the formulas $R_{\\mathbf{i}}(\\mathbf{1})=\\mathbf{i}$, $R_{\\mathbf{i}}(-\\mathbf{1})=-\\mathbf{i}$, $R_{\\mathbf{i}}(\\mathbf{i})=-\\mathbf{1}$, $R_{\\mathbf{i}}(-\\mathbf{i})=\\mathbf{1}$, $R_{\\mathbf{i}}(\\mathbf{j})=-\\mathbf{k}$, $R_{\\mathbf{i}}(-\\mathbf{j})=\\mathbf{k}$, $R_{\\mathbf{i}}(\\mathbf{k})=\\mathbf{j}$ and $R_{\\mathbf{i}}(-\\mathbf{k})=-\\mathbf{j}$:"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([RI(One)==I, RI(minusOne)==minusI, \n",
" RI(I)==minusOne, RI(minusI)==One,\n",
" RI(J)==minusK, RI(minusJ)==K,\n",
" RI(K)==J, RI(minusK)==minusJ])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Left-invariant vector field induced by the right translation by $\\mathbf{i}$\n",
"\n",
"Let us recall the expression of the right translation by $\\mathbf{i}$ on $\\mathbb{R}^4$:"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"R^4 --> R^4\n",
" (T, X, Y, Z) |--> (-X, T, Z, -Y)"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RI_R4.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We turn it into a vector field $E_{\\mathbf{i}}$ on $\\mathbb{R}^4$ by identifying $T_p\\mathbb{R}^4$ and $\\mathbb{R}^4$ at each point $p\\in\\mathbb{R}^4$:"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_I = -X d/dT + T d/dX + Z d/dY - Y d/dZ"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"EI = R4.vector_field(name='E_I', latex_name=r'E_{\\mathbf{i}}')\n",
"EI[:] = RI_R4.expression()\n",
"EI.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The \"radial\" vector field on $\\mathbb{R}^4$ is"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"r = T d/dT + X d/dX + Y d/dY + Z d/dZ"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = R4.vector_field(name='r')\n",
"r[:] = (T,X,Y,Z)\n",
"r.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"It is clear that $r\\cdot E_{\\mathbf{i}}=0$, where $\\cdot$ denotes the standard Euclidean scalar product in $\\mathbb{R}^4$. We can check this property explicitely by introducing the Euclidean metric:"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"h = dT*dT + dX*dX + dY*dY + dZ*dZ"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"h = R4.metric('h')\n",
"h[0,0], h[1,1], h[2,2], h[3, 3] = 1, 1, 1, 1\n",
"h.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"so that $r\\cdot E_{\\mathbf{i}} = h(r, E_{\\mathbf{i}})$:"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"h(r, EI) == 0"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"This proves that the vector field $E_{\\mathbf{i}}$ is tangent to $\\mathbb{S}^3$, or more precisely to the embedded submanifold $\\Phi(\\mathbb{S}^3)$. Consequently, there exists a vector field $\\varepsilon_{\\mathbf{i}}$ on $\\mathbb{S}^3$, the pushforward of which by $\\Phi$ is \n",
"$E_{\\mathbf{i}}$:\n",
"$$\n",
" E_{\\mathbf{i}} = \\Phi^* \\varepsilon_{\\mathbf{i}}\n",
"$$\n",
"Let us determine the components of $\\varepsilon_{\\mathbf{i}}$ in the vector frame \n",
"$\\left(\\frac{\\partial}{\\partial x}, \\frac{\\partial}{\\partial y}, \\frac{\\partial}{\\partial z}\\right)$ associated with the stereographic coordinates on $U$:"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Coordinate frame (U, (d/dx,d/dy,d/dz))"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frameN = stereoN.frame()\n",
"frameN"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The pushforwards by $\\Phi$ of the stereographic frame vectors are:"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[Vector field Phi^*(d/dx) along the Open subset U of the 3-dimensional differentiable manifold S^3 with values on the 4-dimensional differentiable manifold R^4,\n",
" Vector field Phi^*(d/dy) along the Open subset U of the 3-dimensional differentiable manifold S^3 with values on the 4-dimensional differentiable manifold R^4,\n",
" Vector field Phi^*(d/dz) along the Open subset U of the 3-dimensional differentiable manifold S^3 with values on the 4-dimensional differentiable manifold R^4]"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frameN_R4 = [Phi.pushforward(frameN[i]) for i in S3.irange()]\n",
"frameN_R4"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vector field Phi^*(d/dx) along the Open subset U of the 3-dimensional differentiable manifold S^3 with values on the 4-dimensional differentiable manifold R^4\n"
]
}
],
"source": [
"print(frameN_R4[0])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The expressions of $\\Phi^* \\frac{\\partial}{\\partial x}$, $\\Phi^* \\frac{\\partial}{\\partial y}$\n",
"and $\\Phi^* \\frac{\\partial}{\\partial z}$ in terms of the canonical vector frame $\\left(\\frac{\\partial}{\\partial T}, \\frac{\\partial}{\\partial X},\\frac{\\partial}{\\partial Y},\\frac{\\partial}{\\partial Z}\\right)$ of $\\mathbb{R}^4$ are"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Phi^*(d/dx) = -4*x/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dT - 2*(x^2 - y^2 - z^2 - 1)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dX - 4*x*y/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dY - 4*x*z/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dZ"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frameN_R4[0].display()"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Phi^*(d/dy) = -4*y/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dT - 4*x*y/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dX + 2*(x^2 - y^2 + z^2 + 1)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dY - 4*y*z/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dZ"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frameN_R4[1].display()"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Phi^*(d/dz) = -4*z/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dT - 4*x*z/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dX - 4*y*z/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dY + 2*(x^2 + y^2 - z^2 + 1)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) d/dZ"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frameN_R4[2].display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us denote by $(a,b,c)$ the components of $\\left. \\varepsilon_{\\mathbf{i}} \\right|_{U}$ in the stereographic frame:\n",
"$$ \\left. \\varepsilon_{\\mathbf{i}} \\right|_{U} = a \\frac{\\partial}{\\partial x}\n",
" + b \\frac{\\partial}{\\partial y}\n",
" + c \\frac{\\partial}{\\partial z} $$\n",
"Since $\\Phi^*\\varepsilon_{\\mathbf{i}}=\\left. E_{\\mathbf{i}} \\right| _{\\Phi(\\mathbb{S}^3)}$, \n",
"we get the linear system\n",
"$$ a\\, \\Phi^* \\frac{\\partial}{\\partial x} + b \\, \\Phi^* \\frac{\\partial}{\\partial y} \n",
" + c\\, \\Phi^* \\frac{\\partial}{\\partial z} =\n",
" \\left. E_{\\mathbf{i}} \\right| _{\\Phi(U)} $$\n",
"to be solved in $(a,b,c)$. The right-hand side is"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-2*x/(x^2 + y^2 + z^2 + 1),\n",
" -(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 + 1),\n",
" 2*z/(x^2 + y^2 + z^2 + 1),\n",
" -2*y/(x^2 + y^2 + z^2 + 1)]"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = U((x,y,z), chart=stereoN, name='p')\n",
"EIp = EI.at(Phi(p))\n",
"EIp[:]"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Hence the system:"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-4*(a*x + b*y + c*z)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) == -2*x/(x^2 + y^2 + z^2 + 1),\n",
" -2*(a*x^2 + 2*b*x*y - a*y^2 + 2*c*x*z - a*z^2 - a)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) == -(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 + 1),\n",
" 2*(b*x^2 - 2*a*x*y - b*y^2 - 2*c*y*z + b*z^2 + b)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) == 2*z/(x^2 + y^2 + z^2 + 1),\n",
" 2*(c*x^2 + c*y^2 - c*z^2 - 2*(a*x + b*y)*z + c)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) == -2*y/(x^2 + y^2 + z^2 + 1)]"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eqs = [(a*frameN_R4[0][i] + b*frameN_R4[1][i] + c*frameN_R4[2][i]).expr() == EIp[i]\n",
" for i in R4.irange()]\n",
"eqs"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The unique solution is"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[{c: x*z - y, b: x*y + z, a: 1/2*x^2 - 1/2*y^2 - 1/2*z^2 + 1/2}]"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sol = solve(eqs, (a,b,c), solution_dict=True)\n",
"sol"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The expression of $\\varepsilon_{\\mathbf{i}}$ in terms of the frame associated with the stereographic coordinates on $U$ is thus"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(1/2*x^2 - 1/2*y^2 - 1/2*z^2 + 1/2) d/dx + (x*y + z) d/dy + (x*z - y) d/dz"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"epsI = sol[0][a] * frameN[1] + sol[0][b] * frameN[2] + sol[0][c] * frameN[3]\n",
"epsI.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Global vector frame on $\\mathbb{S}^3$"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The vector field $E_{\\mathbf{i}}$ never vanishes on $\\Phi(\\mathbb{S}^3)$, since it vanishes only at $(T,X,Y,Z)=(0,0,0,0)$. It follows that $\\varepsilon_{\\mathbf{i}}$ never vanishes on $\\mathbb{S}^3$. \n",
"Similarly, starting from the right translation by $\\mathbf{j}$ and the right translation by $\\mathbf{k}$, we can construct global vector fields $\\varepsilon_{\\mathbf{j}}$ and $\\varepsilon_{\\mathbf{k}}$ that are always nonzero on $\\mathbb{S}^3$. \n",
"Moreover, the vector fields\n",
"$\\varepsilon_{\\mathbf{i}}$, $\\varepsilon_{\\mathbf{j}}$ and $\\varepsilon_{\\mathbf{k}}$ are linearly independent at any point of $\\mathbb{S}^3$. They thus form a global vector frame of $\\mathbb{S}^3$. This means that, as any Lie group, $\\mathbb{S}^3$ is a **parallelizable manifold**. This contrasts with $\\mathbb{S}^2$. Actually the only parallelizable spheres are $\\mathbb{S}^1$, $\\mathbb{S}^3$ and $\\mathbb{S}^7$.\n",
"\n",
"Let us declare the global vector frame $(\\varepsilon_{\\mathbf{i}}, \\varepsilon_{\\mathbf{j}}, \\varepsilon_{\\mathbf{k}})$, using the notations $\\varepsilon_1 := \\varepsilon_{\\mathbf{i}}$, $\\varepsilon_2 := \\varepsilon_{\\mathbf{j}}$ and $\\varepsilon_3 := \\varepsilon_{\\mathbf{k}}$:"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Vector frame (S^3, (E_1,E_2,E_3))"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E = S3.vector_frame('E', latex_symbol=r'\\varepsilon')\n",
"E"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Stereographic components of the vector field $\\varepsilon_1$"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"On $U$, we can set the components of $\\varepsilon_1$ in the stereographic frame $\\left(\\frac{\\partial}{\\partial x}, \\frac{\\partial}{\\partial y}, \\frac{\\partial}{\\partial z}\\right)$ to those obtained above:"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_1 = (1/2*x^2 - 1/2*y^2 - 1/2*z^2 + 1/2) d/dx + (x*y + z) d/dy + (x*z - y) d/dz"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E[1].restrict(U)[stereoN.frame(),:,stereoN] = (sol[0][a], sol[0][b], sol[0][c])\n",
"E[1].display(stereoN.frame())"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us check that the pushforward of $\\varepsilon_1$ by $\\Phi$ coincides with $E_{\\mathbf{i}}$:"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Phi^*(E_1) = -2*x/(x^2 + y^2 + z^2 + 1) d/dT - (x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 + 1) d/dX + 2*z/(x^2 + y^2 + z^2 + 1) d/dY - 2*y/(x^2 + y^2 + z^2 + 1) d/dZ"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E1U_R4 = Phi.pushforward(E[1].restrict(U))\n",
"E1U_R4.display()"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([E1U_R4[i] == EIp[i] for i in R4.irange()])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us now determine the components of $\\varepsilon_1$ in the vector frame $\\left(\\frac{\\partial}{\\partial x'}, \\frac{\\partial}{\\partial y'}, \\frac{\\partial}{\\partial z'}\\right)$ associated with the stereographic chart from the South pole:"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Coordinate frame (V, (d/dxp,d/dyp,d/dzp))"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frameS = stereoS.frame()\n",
"frameS"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We use the same procedure as for the stereographic frame from the North pole:"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[Vector field Phi^*(d/dxp) along the Open subset V of the 3-dimensional differentiable manifold S^3 with values on the 4-dimensional differentiable manifold R^4,\n",
" Vector field Phi^*(d/dyp) along the Open subset V of the 3-dimensional differentiable manifold S^3 with values on the 4-dimensional differentiable manifold R^4,\n",
" Vector field Phi^*(d/dzp) along the Open subset V of the 3-dimensional differentiable manifold S^3 with values on the 4-dimensional differentiable manifold R^4]"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frameS_R4 = [Phi.pushforward(frameS[i]) for i in S3.irange()]\n",
"frameS_R4"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-2*xp/(xp^2 + yp^2 + zp^2 + 1),\n",
" (xp^2 + yp^2 + zp^2 - 1)/(xp^2 + yp^2 + zp^2 + 1),\n",
" 2*zp/(xp^2 + yp^2 + zp^2 + 1),\n",
" -2*yp/(xp^2 + yp^2 + zp^2 + 1)]"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = V((xp,yp,zp), chart=stereoS, name='p')\n",
"EIp = EI.at(Phi(p))\n",
"EIp[:]"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[4*(a*xp + b*yp + c*zp)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) == -2*xp/(xp^2 + yp^2 + zp^2 + 1),\n",
" -2*(a*xp^2 + 2*b*xp*yp - a*yp^2 + 2*c*xp*zp - a*zp^2 - a)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) == (xp^2 + yp^2 + zp^2 - 1)/(xp^2 + yp^2 + zp^2 + 1),\n",
" 2*(b*xp^2 - 2*a*xp*yp - b*yp^2 - 2*c*yp*zp + b*zp^2 + b)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) == 2*zp/(xp^2 + yp^2 + zp^2 + 1),\n",
" 2*(c*xp^2 + c*yp^2 - c*zp^2 - 2*(a*xp + b*yp)*zp + c)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) == -2*yp/(xp^2 + yp^2 + zp^2 + 1)]"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eqs = [(a*frameS_R4[0][i] + b*frameS_R4[1][i] + c*frameS_R4[2][i]).expr() == EIp[i] \n",
" for i in R4.irange()]\n",
"eqs"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[{c: -xp*zp - yp, b: -xp*yp + zp, a: -1/2*xp^2 + 1/2*yp^2 + 1/2*zp^2 - 1/2}]"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sol = solve(eqs, (a,b,c), solution_dict=True)\n",
"sol"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_1 = (-1/2*xp^2 + 1/2*yp^2 + 1/2*zp^2 - 1/2) d/dxp + (-xp*yp + zp) d/dyp + (-xp*zp - yp) d/dzp"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E[1].restrict(V)[stereoS.frame(),:, stereoS] = (sol[0][a], sol[0][b], sol[0][c])\n",
"E[1].display(stereoS.frame())"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Again, we check the correctness by"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E1V_R4 = Phi.pushforward(E[1].restrict(V))\n",
"all([E1V_R4[i] == EIp[i] for i in R4.irange()])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Stereographic components of the vector field $\\varepsilon_2$\n",
"\n",
"The vector field $\\varepsilon_2 = \\varepsilon_{\\mathbf{j}}$ is induced by the right translation by $\\mathbf{j}$:"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"R^4 --> R^4\n",
" (T, X, Y, Z) |--> (-Y, -Z, T, X)"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = R4((T,X,Y,Z))\n",
"RJ_R4 = R4.diff_map(R4, X4(qprod(p, Phi(J))))\n",
"RJ_R4.display()"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_J = -Y d/dT - Z d/dX + T d/dY + X d/dZ"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"EJ = R4.vector_field(name='E_J', latex_name=r'E_{\\mathbf{j}}')\n",
"EJ[:] = RJ_R4.expression()\n",
"EJ.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We determine the components of $\\varepsilon_2$ in the stereographic frame from the North pole as we did for $\\varepsilon_1$:"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-2*y/(x^2 + y^2 + z^2 + 1),\n",
" -2*z/(x^2 + y^2 + z^2 + 1),\n",
" -(x^2 + y^2 + z^2 - 1)/(x^2 + y^2 + z^2 + 1),\n",
" 2*x/(x^2 + y^2 + z^2 + 1)]"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = U((x,y,z), chart=stereoN)\n",
"EJp = EJ.at(Phi(p))\n",
"EJp[:]"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_2 = (x*y - z) d/dx + (-1/2*x^2 + 1/2*y^2 - 1/2*z^2 + 1/2) d/dy + (y*z + x) d/dz"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eqs = [(a*frameN_R4[0][i] + b*frameN_R4[1][i] + c*frameN_R4[2][i]).expr() == EJp[i]\n",
" for i in R4.irange()]\n",
"sol = solve(eqs, (a,b,c), solution_dict=True)\n",
"E[2].restrict(U)[stereoN.frame(),:,stereoN] = (sol[0][a], sol[0][b], sol[0][c])\n",
"E[2].display(stereoN.frame())"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Check:"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E2U_R4 = Phi.pushforward(E[2].restrict(U))\n",
"all([E2U_R4[i] == EJp[i] for i in R4.irange()])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We turn now to the stereographic components from the South pole:"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-2*yp/(xp^2 + yp^2 + zp^2 + 1),\n",
" -2*zp/(xp^2 + yp^2 + zp^2 + 1),\n",
" (xp^2 + yp^2 + zp^2 - 1)/(xp^2 + yp^2 + zp^2 + 1),\n",
" 2*xp/(xp^2 + yp^2 + zp^2 + 1)]"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = V((xp,yp,zp), chart=stereoS)\n",
"EJp = EJ.at(Phi(p))\n",
"EJp[:]"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_2 = (-xp*yp - zp) d/dxp + (1/2*xp^2 - 1/2*yp^2 + 1/2*zp^2 - 1/2) d/dyp + (-yp*zp + xp) d/dzp"
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eqs = [(a*frameS_R4[0][i] + b*frameS_R4[1][i] + c*frameS_R4[2][i]).expr() == EJp[i] \n",
" for i in R4.irange()]\n",
"sol = solve(eqs, (a,b,c), solution_dict=True)\n",
"E[2].restrict(V)[stereoS.frame(),:, stereoS] = (sol[0][a], sol[0][b], sol[0][c])\n",
"E[2].display(stereoS.frame())"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E2V_R4 = Phi.pushforward(E[2].restrict(V))\n",
"all([E2V_R4[i] == EJp[i] for i in R4.irange()])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Stereographic components of the vector field $\\varepsilon_3$\n",
"\n",
"The vector field $\\varepsilon_3 = \\varepsilon_{\\mathbf{k}}$ is induced by the right translation by $\\mathbf{k}$:"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"R^4 --> R^4\n",
" (T, X, Y, Z) |--> (-Z, Y, -X, T)"
]
},
"execution_count": 120,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = R4((T,X,Y,Z))\n",
"RK_R4 = R4.diff_map(R4, X4(qprod(p, Phi(K))))\n",
"RK_R4.display()"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_K = -Z d/dT + Y d/dX - X d/dY + T d/dZ"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"EK = R4.vector_field(name='E_K', latex_name=r'E_{\\mathbf{k}}')\n",
"EK[:] = RK_R4.expression()\n",
"EK.display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The components of $\\varepsilon_3$ in the two stereographic frames are obtained in the same manner as for $\\varepsilon_1$ and $\\varepsilon_2$"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_3 = (x*z + y) d/dx + (y*z - x) d/dy + (-1/2*x^2 - 1/2*y^2 + 1/2*z^2 + 1/2) d/dz"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = U((x,y,z), chart=stereoN)\n",
"EKp = EK.at(Phi(p))\n",
"eqs = [(a*frameN_R4[0][i] + b*frameN_R4[1][i] + c*frameN_R4[2][i]).expr() == EKp[i]\n",
" for i in R4.irange()]\n",
"sol = solve(eqs, (a,b,c), solution_dict=True)\n",
"E[3].restrict(U)[stereoN.frame(),:,stereoN] = (sol[0][a], sol[0][b], sol[0][c])\n",
"E[3].display(stereoN.frame())"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 123,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E3U_R4 = Phi.pushforward(E[3].restrict(U))\n",
"all([E3U_R4[i] == EKp[i] for i in R4.irange()])"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_3 = (-xp*zp + yp) d/dxp + (-yp*zp - xp) d/dyp + (1/2*xp^2 + 1/2*yp^2 - 1/2*zp^2 - 1/2) d/dzp"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = V((xp,yp,zp), chart=stereoS)\n",
"EKp = EK.at(Phi(p))\n",
"eqs = [(a*frameS_R4[0][i] + b*frameS_R4[1][i] + c*frameS_R4[2][i]).expr() == EKp[i] \n",
" for i in R4.irange()]\n",
"sol = solve(eqs, (a,b,c), solution_dict=True)\n",
"E[3].restrict(V)[stereoS.frame(),:, stereoS] = (sol[0][a], sol[0][b], sol[0][c])\n",
"E[3].display(stereoS.frame())"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 125,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E3V_R4 = Phi.pushforward(E[3].restrict(V))\n",
"all([E3V_R4[i] == EKp[i] for i in R4.irange()])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### Summary\n",
"\n",
"The vector fields on $\\mathbb{R}^4$ induced by the right translations by respectively $\\mathbf{i}$, $\\mathbf{j}$ and $\\mathbf{k}$ are"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_I = -X d/dT + T d/dX + Z d/dY - Y d/dZ"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_J = -Y d/dT - Z d/dX + T d/dY + X d/dZ"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_K = -Z d/dT + Y d/dX - X d/dY + T d/dZ"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show(EI.display())\n",
"show(EJ.display())\n",
"show(EK.display())"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"As a check, we note that the above formulas coincide with those given in Problem 8-6 of Lee's textbook [*Introduction to Smooth Manifolds*](https://dx.doi.org/10.1007/978-1-4419-9982-5), 2nd ed., Springer (New York) (2013).\n",
"\n",
"The vector fields $E_{\\mathbf{i}}$, $E_{\\mathbf{j}}$ and $E_{\\mathbf{k}}$ are tangent to $\\Phi(\\mathbb{S}^3)\\subset\\mathbb{R}^4$ and therefore induce three vectors fields on $\\mathbb{S}^3$, $\\varepsilon_1$, $\\varepsilon_2$ and $\\varepsilon_3$, which form a global vector frame of $\\mathbb{S}^3$. The components of these vector fields with respect to the (local) stereographic frames are "
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_1 = (1/2*x^2 - 1/2*y^2 - 1/2*z^2 + 1/2) d/dx + (x*y + z) d/dy + (x*z - y) d/dz"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_2 = (x*y - z) d/dx + (-1/2*x^2 + 1/2*y^2 - 1/2*z^2 + 1/2) d/dy + (y*z + x) d/dz"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_3 = (x*z + y) d/dx + (y*z - x) d/dy + (-1/2*x^2 - 1/2*y^2 + 1/2*z^2 + 1/2) d/dz"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" \n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_1 = (-1/2*xp^2 + 1/2*yp^2 + 1/2*zp^2 - 1/2) d/dxp + (-xp*yp + zp) d/dyp + (-xp*zp - yp) d/dzp"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_2 = (-xp*yp - zp) d/dxp + (1/2*xp^2 - 1/2*yp^2 + 1/2*zp^2 - 1/2) d/dyp + (-yp*zp + xp) d/dzp"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_3 = (-xp*zp + yp) d/dxp + (-yp*zp - xp) d/dyp + (1/2*xp^2 + 1/2*yp^2 - 1/2*zp^2 - 1/2) d/dzp"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i in S3.irange():\n",
" show(E[i].display(stereoN.frame()))\n",
"print(\" \")\n",
"for i in S3.irange():\n",
" show(E[i].display(stereoS.frame()))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"To complete the connection between the global frame $(\\varepsilon_i)$ and the stereographic frames in $U$ and $V$, we shall declare the change-of-basis formulas related the two frames, so that they can be used automatically by SageMath when necessary. Starting with $U$, we first consider the restriction of the global frame to $U$:"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Vector frame (U, (E_1,E_2,E_3))"
]
},
"execution_count": 128,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U = E.restrict(U); E_U"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The automorphism $P$ such that on $U$, $\\varepsilon_i = P\\left(\\frac{\\partial}{\\partial x^i}\\right)$ is read directely on the components of $\\varepsilon_i$ with respect to the\n",
"frame $\\left(\\frac{\\partial}{\\partial x^i}\\right) = \\left(\\frac{\\partial}{\\partial x}, \\frac{\\partial}{\\partial y}, \\frac{\\partial}{\\partial z} \\right)$:"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[ 1/2*x^2 - 1/2*y^2 - 1/2*z^2 + 1/2 x*y - z x*z + y]\n",
"[ x*y + z -1/2*x^2 + 1/2*y^2 - 1/2*z^2 + 1/2 y*z - x]\n",
"[ x*z - y y*z + x -1/2*x^2 - 1/2*y^2 + 1/2*z^2 + 1/2]"
]
},
"execution_count": 129,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"P = U.automorphism_field()\n",
"for i in S3.irange():\n",
" for j in S3.irange():\n",
" P[j,i] = E_U[i][j]\n",
"P[:]"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Check of the formula $\\varepsilon_i = P\\left(\\frac{\\partial}{\\partial x^i}\\right)$:"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 130,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([E_U[i] == P(frameN[i]) for i in S3.irange()])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We declare the change of frame by the method `set_change_of_frame`:"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"U.set_change_of_frame(frameN, E_U, P)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The inverse is automatically computed:"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[ 2*(x^2 - y^2 - z^2 + 1)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) 4*(x*y + z)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) 4*(x*z - y)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1)]\n",
"[ 4*(x*y - z)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) -2*(x^2 - y^2 + z^2 - 1)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) 4*(y*z + x)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1)]\n",
"[ 4*(x*z + y)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) 4*(y*z - x)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1) -2*(x^2 + y^2 - z^2 - 1)/(x^4 + y^4 + z^4 + 2*(x^2 + 1)*y^2 + 2*(x^2 + y^2 + 1)*z^2 + 2*x^2 + 1)]"
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"U.change_of_frame(E_U, frameN)[:]"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We do the same thing on $V$:"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Vector frame (V, (E_1,E_2,E_3))"
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_V = E.restrict(V); E_V"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-1/2*xp^2 + 1/2*yp^2 + 1/2*zp^2 - 1/2 -xp*yp - zp -xp*zp + yp]\n",
"[ -xp*yp + zp 1/2*xp^2 - 1/2*yp^2 + 1/2*zp^2 - 1/2 -yp*zp - xp]\n",
"[ -xp*zp - yp -yp*zp + xp 1/2*xp^2 + 1/2*yp^2 - 1/2*zp^2 - 1/2]"
]
},
"execution_count": 134,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"P = V.automorphism_field()\n",
"for i in S3.irange():\n",
" for j in S3.irange():\n",
" P[j,i] = E_V[i][j]\n",
"P[:]"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 135,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([E_V[i] == P(frameS[i]) for i in S3.irange()])"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"V.set_change_of_frame(frameS, E_V, P)"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-2*(xp^2 - yp^2 - zp^2 + 1)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) -4*(xp*yp - zp)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) -4*(xp*zp + yp)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1)]\n",
"[ -4*(xp*yp + zp)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) 2*(xp^2 - yp^2 + zp^2 - 1)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) -4*(yp*zp - xp)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1)]\n",
"[ -4*(xp*zp - yp)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) -4*(yp*zp + xp)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1) 2*(xp^2 + yp^2 - zp^2 - 1)/(xp^4 + yp^4 + zp^4 + 2*(xp^2 + 1)*yp^2 + 2*(xp^2 + yp^2 + 1)*zp^2 + 2*xp^2 + 1)]"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"V.change_of_frame(E_V, frameS)[:]"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"### $\\mathbb{S}^3$ as a parallelizable manifold\n",
"\n",
"Because it admits a global vector frame, $\\mathbb{S}^3$ is a parallelizable manifold:"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"S3.is_manifestly_parallelizable()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Equivalently, the set $\\mathfrak{X}(\\mathbb{S}^3)$ of vector fields on $\\mathbb{S}^3$ is a **free module of finite rank** over the algebra $C^\\infty(\\mathbb{S}^3)$ (the algebra of smooth scalar fields on $\\mathbb{S}^3$:"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Free module X(S^3) of vector fields on the 3-dimensional differentiable manifold S^3"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"XS3 = S3.vector_field_module()\n",
"XS3"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"isinstance(XS3, FiniteRankFreeModule)"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Category of finite dimensional modules over Algebra of differentiable scalar fields on the 3-dimensional differentiable manifold S^3\n"
]
}
],
"source": [
"print(XS3.category())"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"As a free module, $\\mathfrak{X}(\\mathbb{S}^3)$ admits a basis, which is nothing but the global vector frame constructed above:"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Vector frame (S^3, (E_1,E_2,E_3))"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"XS3.default_basis()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Structure coefficients of the global frame\n",
"\n",
"On $U$, we may compute the **Lie brackets** $[\\varepsilon_i, \\varepsilon_j]$ of two vectors of the global frame:"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[E_1,E_2] = 2 E_3"
]
},
"execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[1].bracket(E_U[2]).display(E_U)"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[E_1,E_3] = -2 E_2"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[1].bracket(E_U[3]).display(E_U)"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[E_2,E_3] = 2 E_1"
]
},
"execution_count": 145,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[2].bracket(E_U[3]).display(E_U)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Equivalently, the structure coefficients of the frame $\\varepsilon$ are"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"3-indices components w.r.t. Vector frame (U, (E_1,E_2,E_3)), with antisymmetry on the index positions (1, 2)"
]
},
"execution_count": 146,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"C = E_U.structure_coeff(); C"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"C_123 = 2 \n",
"C_132 = -2 \n",
"C_213 = -2 \n",
"C_231 = 2 \n",
"C_312 = 2 \n",
"C_321 = -2 "
]
},
"execution_count": 147,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"C.display('C')"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"By definition, the structure coefficients $C_{kij}$ obey the relation\n",
"$[\\varepsilon_i, \\varepsilon_j] = C_{kij} \\, \\varepsilon_k$, as we can check:"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[1].bracket(E_U[2]) == sum(C[[k,1,2]]*E_U[k] for k in S3.irange())"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Tangent space at the unit element\n",
"\n",
"The Lie algebra of $\\mathbb{S}^3$ can be identified with the tangent space at the unit element $\\mathbf{1}$:"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Tangent space at Point 1 on the 3-dimensional differentiable manifold S^3"
]
},
"execution_count": 149,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"T1 = S3.tangent_space(One)\n",
"T1"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The values taken by the global frame vectors at $\\mathbf{1}$ are"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_1 = 1/2 d/dx"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_2 = 1/2 d/dy"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_3 = 1/2 d/dz"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i in S3.irange():\n",
" show(E[i].at(One).display())"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Each of these vectors belongs to $T_{\\mathbf{1}}\\mathbb{S}^3$:"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Tangent space at Point 1 on the 3-dimensional differentiable manifold S^3"
]
},
"execution_count": 151,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E[1].at(One).parent()"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"True"
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all([E[i].at(One).parent() is T1 for i in S3.irange()])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The simple expressions of $(\\varepsilon_1, \\varepsilon_2, \\varepsilon_3)$ in terms of the basis $\\left(\\frac{\\partial}{\\partial x}, \\frac{\\partial}{\\partial y}, \\frac{\\partial}{\\partial z}\\right)$ of $T_{\\mathbf{1}}\\mathbb{S}^3$ induced by the stereographic coordinates stems from the fact that\n",
"the $\\mathbb{R}^4$ vectors $(E_{\\mathbf{i}}, E_{\\mathbf{j}}, E_{\\mathbf{k}})$ coincide with \n",
"the vectors $\\left(\\frac{\\partial}{\\partial X}, \\frac{\\partial}{\\partial Y}, \\frac{\\partial}{\\partial Z}\\right)$ at $\\Phi(\\mathbf{1})$:"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_I = d/dX"
]
},
"execution_count": 153,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"EI.at(Phi(One)).display()"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_J = d/dY"
]
},
"execution_count": 154,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"EJ.at(Phi(One)).display()"
]
},
{
"cell_type": "code",
"execution_count": 155,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_K = d/dZ"
]
},
"execution_count": 155,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"EK.at(Phi(One)).display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The extra factor $1/2$, which appears in the above expressions of $(\\varepsilon_1, \\varepsilon_2, \\varepsilon_3)$, arises from the fact that the stereographic coordinates $(x,y,z)$ have been defined with respect to the hyperplane $T=0$ and not to the hyperplane $T=1$ (to which $\\Phi(\\mathbf{1})$ belongs). "
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Link with the Hopf coordinates\n",
"\n",
"The Hopf coordinates have been introduced in the worksheet [3-sphere: charts, quaternions and the Hopf fribration](http://nbviewer.jupyter.org/github/sagemanifolds/SageManifolds/blob/master/Worksheets/v1.0/SM_sphere_S3_Hopf.ipynb)."
]
},
{
"cell_type": "code",
"execution_count": 156,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"B = U.open_subset('B', coord_def={stereoN.restrict(U): \n",
" [x^2+y^2!=0, x^2+y^2+z^2!=1, \n",
" (1-x^2-y^2-z^2)*x-2*y*z!=0]})"
]
},
{
"cell_type": "code",
"execution_count": 157,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"Chart (B, (eta, alpha, beta))"
]
},
"execution_count": 157,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Hcoord. = B.chart(r\"eta:(0,pi/2):\\eta alpha:(0,2*pi):\\alpha beta:(0,2*pi):\\beta\")\n",
"Hcoord"
]
},
{
"cell_type": "code",
"execution_count": 158,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"x = cos(alpha + beta)*sin(eta)/(cos(eta)*sin(alpha) + 1)\n",
"y = sin(alpha + beta)*sin(eta)/(cos(eta)*sin(alpha) + 1)\n",
"z = cos(alpha)*cos(eta)/(cos(eta)*sin(alpha) + 1)"
]
},
"execution_count": 158,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Hcoord_to_stereoN = Hcoord.transition_map(\n",
" stereoN.restrict(U),\n",
" (sin(eta)*cos(alp+bet)/(1+cos(eta)*sin(alp)),\n",
" sin(eta)*sin(alp+bet)/(1+cos(eta)*sin(alp)),\n",
" cos(eta)*cos(alp)/(1+cos(eta)*sin(alp))))\n",
"Hcoord_to_stereoN.display()"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"eta = arcsin(2*sqrt(x^2 + y^2)/(x^2 + y^2 + z^2 + 1))\n",
"alpha = pi + arctan2(x^2 + y^2 + z^2 - 1, -2*z)\n",
"beta = -arctan2(x^2 + y^2 + z^2 - 1, -2*z) + arctan2(-y, -x)"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Hcoord_to_stereoN.set_inverse(asin(2*sqrt(x^2+y^2)/(1+x^2+y^2+z^2)),\n",
" atan2(x^2+y^2+z^2-1, -2*z) + pi,\n",
" atan2(-y,-x) - atan2(x^2+y^2+z^2-1, -2*z))\n",
"Hcoord_to_stereoN.inverse().display()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Let us express the vectors of the global frame $\\varepsilon$ in terms of the vector frame $\\left(\\frac{\\partial}{\\partial\\eta}, \\frac{\\partial}{\\partial\\alpha}, \\frac{\\partial}{\\partial\\beta}\\right)$ associated with the Hopf coordinates:"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_1 = (2*cos(alpha)*cos(beta)*sin(alpha) + (2*cos(alpha)*cos(beta)*sin(alpha)^2 - (2*sin(alpha)^3 - sin(alpha))*sin(beta))*cos(eta) - (2*sin(alpha)^2 - 1)*sin(beta))*sin(eta)/(sqrt(cos(eta) + 1)*sqrt(-cos(eta) + 1)*abs(cos(eta)*sin(alpha) + 1)) d/deta + (2*cos(alpha)*sin(alpha)*sin(beta) + (2*sin(alpha)^2 - 1)*cos(beta))*sin(eta)/cos(eta) d/dalpha - (2*cos(alpha)*sin(alpha)*sin(beta) - (2*cos(alpha)^2 - 1)*cos(beta))/(cos(eta)*sin(eta)) d/dbeta"
]
},
"execution_count": 160,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[1].display(Hcoord.frame(), Hcoord)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"There is a lack of simplifications: we should have $|\\cos\\eta\\sin\\alpha+1| = \\cos\\eta\\sin\\alpha+1$. Moreover, since $\\eta\\in(0,\\pi/2)$, $|\\cos\\eta|=\\cos\\eta$ and $\\sqrt{\\cos\\eta+1}\\sqrt{-\\cos\\eta+1}=|\\sin\\eta|=\\sin\\eta$. Accordingly the component $\\varepsilon_1^{\\ \\, \\eta}$ can be simplified to"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(2*cos(alpha)*cos(beta)*sin(alpha) + (2*cos(alpha)*cos(beta)*sin(alpha)^2 - (2*sin(alpha)^3 - sin(alpha))*sin(beta))*cos(eta) - (2*sin(alpha)^2 - 1)*sin(beta))*sin(eta)/((cos(eta)*sin(alpha) + 1)*sqrt(cos(eta) + 1)*sqrt(-cos(eta) + 1))"
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E1_eta = E_U[1][Hcoord.frame(), 1, Hcoord].expr()\n",
"E1_eta = E1_eta.subs({abs(cos(eta)): cos(eta), \n",
" abs(cos(eta)*sin(alp)+1): cos(eta)*sin(alp)+1})\n",
"E1_eta"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"which can be simplified further to $\\varepsilon_1^{\\ \\, \\eta}=\\sin(2\\alpha+\\beta)$. \n",
"Similarly, we notice that $\\varepsilon_1^{\\ \\, \\alpha}=-\\cos(2\\alpha+\\beta)\\tan\\eta$ and \n",
"$\\varepsilon_1^{\\ \\, \\beta}=\\cos(2\\alpha+\\beta)/(\\cos\\eta\\sin\\eta)$. Hence, we substitute these values for the components of $\\varepsilon_1$ via the method `add_comp` (NB: the method `set_comp` would erase the other sets of components):"
]
},
{
"cell_type": "code",
"execution_count": 162,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_1 = sin(2*alpha + beta) d/deta - cos(2*alpha + beta)*tan(eta) d/dalpha + cos(2*alpha + beta)/(cos(eta)*sin(eta)) d/dbeta"
]
},
"execution_count": 162,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[1].add_comp(Hcoord.frame())[1, Hcoord] = sin(2*alp+bet)\n",
"E_U[1].add_comp(Hcoord.frame())[2, Hcoord] = -cos(2*alp+bet) * tan(eta)\n",
"E_U[1].add_comp(Hcoord.frame())[3, Hcoord] = cos(2*alp+bet) / (cos(eta)*sin(eta))\n",
"E_U[1].display(Hcoord.frame(), Hcoord)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"Similarly, the components of $\\varepsilon_2$ require some simplification \"by hand\":"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_2 = (2*cos(alpha)*sin(alpha)*sin(beta) + (2*sin(alpha)^2 - 1)*cos(beta) + (2*cos(alpha)*sin(alpha)^2*sin(beta) + (2*sin(alpha)^3 - sin(alpha))*cos(beta))*cos(eta))*sin(eta)/(sqrt(cos(eta) + 1)*sqrt(-cos(eta) + 1)*abs(cos(eta)*sin(alpha) + 1)) d/deta - (2*cos(alpha)*cos(beta)*sin(alpha) - (2*sin(alpha)^2 - 1)*sin(beta))*sin(eta)/cos(eta) d/dalpha + (2*cos(alpha)*cos(beta)*sin(alpha) + (2*cos(alpha)^2 - 1)*sin(beta))/(cos(eta)*sin(eta)) d/dbeta"
]
},
"execution_count": 163,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[2].display(Hcoord.frame(), Hcoord)"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(2*cos(alpha)*sin(alpha)*sin(beta) + (2*sin(alpha)^2 - 1)*cos(beta) + (2*cos(alpha)*sin(alpha)^2*sin(beta) + (2*sin(alpha)^3 - sin(alpha))*cos(beta))*cos(eta))*sin(eta)/((cos(eta)*sin(alpha) + 1)*sqrt(cos(eta) + 1)*sqrt(-cos(eta) + 1))"
]
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E2_eta = E_U[2][Hcoord.frame(), 1, Hcoord].expr()\n",
"E2_eta = E2_eta.subs({abs(cos(eta)): cos(eta), \n",
" abs(cos(eta)*sin(alp)+1): cos(eta)*sin(alp)+1})\n",
"E2_eta"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_2 = -cos(2*alpha + beta) d/deta - sin(2*alpha + beta)*tan(eta) d/dalpha + sin(2*alpha + beta)/(cos(eta)*sin(eta)) d/dbeta"
]
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[2].add_comp(Hcoord.frame())[1, Hcoord] = -cos(2*alp+bet)\n",
"E_U[2].add_comp(Hcoord.frame())[2, Hcoord] = -sin(2*alp+bet) * tan(eta)\n",
"E_U[2].add_comp(Hcoord.frame())[3, Hcoord] = sin(2*alp+bet) / (cos(eta)*sin(eta))\n",
"E_U[2].display(Hcoord.frame(), Hcoord)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The expression of $\\varepsilon_3$ in terms of the vector frame $\\left(\\frac{\\partial}{\\partial\\eta}, \\frac{\\partial}{\\partial\\alpha}, \\frac{\\partial}{\\partial\\beta}\\right)$ is particularly simple:"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"E_3 = -d/dalpha"
]
},
"execution_count": 166,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"E_U[3].display(Hcoord.frame(), Hcoord)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"This is not surprising since $\\varepsilon_3$ has been defined as the vector field induced by the right translation by $\\mathbf{k}$ and the **Hopf fibration** considered the worksheet [3-sphere: charts, quaternions and the Hopf fribration](http://nbviewer.jupyter.org/github/sagemanifolds/SageManifolds/blob/master/Worksheets/v1.0/SM_sphere_S3_Hopf.ipynb) has been defined with respect to $\\mathbf{k}$ as \n",
"$$ \n",
" \\begin{array}{cccc}\n",
" h:& \\mathbb{S}^3 & \\to & \\mathbb{S}^2\\\\\n",
" & q & \\mapsto & q \\mathbf{k} \\bar{q}\n",
" \\end{array}\n",
"$$ \n",
"More precisely, we have shown in the above worksheet that $\\frac{\\partial}{\\partial\\alpha}$ is tangent to the $\\mathbb{S}^1$ fibers of $h$ and it is easy to see that the field lines of $\\varepsilon_3$ coincide with these fibers: let $q\\in\\mathbb{S}^3$ and $q'\\in\\mathbb{S}^3$ be a point infinitely close to $q$ on a field line of $\\varepsilon_3$: \n",
"$$\n",
" q' = q + \\lambda \\left. \\varepsilon_3 \\right| _q = q + \\lambda q \\, \\mathbf{k}, \n",
"$$\n",
"where $\\lambda = o(1)$ is an infinitesimal real number and the second equality stems from the very definition of $\\varepsilon_3 = \\varepsilon_{\\mathbf{k}}$ as the vector field associated with the right translation by $\\mathbf{k}$. We have then\n",
"$$\n",
" \\overline{q'} = \\overline{q + \\lambda q \\, \\mathbf{k}} \n",
" = \\bar{q} + \\lambda \\bar{\\mathbf{k}} \\bar{q}\n",
" = \\bar{q} - \\lambda \\mathbf{k} \\bar{q}\n",
"$$\n",
"so that\n",
"$$\n",
" h(q') = (q + \\lambda q \\, \\mathbf{k})\\mathbf{k}(\\bar{q} - \\lambda \\mathbf{k} \\bar{q}) . \n",
"$$\n",
"Expanding and using $\\mathbf{k}^2 = -1$ and $q\\bar{q} = 1$, we find \n",
"$h(q') = h(q)$ at first order in $\\lambda$, which shows that $q$ and $q'$ belong to the same fiber of $h$. \n",
"\n",
"Accordingly the field lines of $\\varepsilon_3$ are circles, as we can check on a (projection) plot in the plane $z=0$:"
]
},
{
"cell_type": "code",
"execution_count": 167,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"Graphics object consisting of 80 graphics primitives"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"graph_z0 = E[3].plot(chart=stereoN, ambient_coords=(x,y),\n",
" fixed_coords={z: 0}, max_range=1, scale=0.5)\n",
"show(graph_z0, aspect_ratio=1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"or in the plane $y=0$:"
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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\nJ7s0SezezSJECyMmpU6d1BOSNCmFsisFCA2WLFlCo0aNIkedL9vzzz9Pzz33nMv5EA/AzlRXB3+T\nZ9IktasREdG997KokO576aVE33yjtj5XVBA9+STR/PnysbZtebOrd2/dj+wXEA3ALkA8ABVWi4if\nfyYaPpz7IXH//URvvKEewL/+mui66zy7JM2YQTRlim/3V5rDpQnMF3P42We77nJddJFsDjcbIdgF\nrGVLiBggA/EAtKioICotJWraNDj3E4Lojz/UY+zevUQ5OfKmkTe03Es7dyZKSPCtL927u244KenU\niej773lhLpGTw/OT8nXDhxP95z/mjvEQDcBuQDwATawUEaWlRGPH8r0lunThnZ0uXeRjs2YRPfOM\n++v84x88+AeKMhBPaaU4cED93nhCCsRTTnodO7IFw0gefZTorbfY4rJypXXBi8BeQDyAunz0EdHo\n0TzebtyoduExgtOn1YHL0tgpufl4IyFBvRFjZGKLwkIOanZHvXq8kSUlShCCkyeMGydvJNWvT/Tm\nm+y6ZNZGDUQDsCsQD8AjVokIIYiWLmURoRys33iDLRHffEN0002y65IW0dEcDNeokfH9IyKqrOSA\n7LrZPY4c0ff6mBii9u1dJ8fWrV0D8/QgBFs+pMnZndsXiDwgHoCEltvN/fcTvfuuf9eTxsG6QkHv\nOBgdTdShg+vmir/joB7ef59dlDzRuzfRp5/yvKNnM8tIIBqA3YF4ALqwSkRomYkvu4zjGfRkUVq9\nmuiWW4zvlydOnVLHU0jNn1Syyp03bztuhw8TtWrlelzL7QtEFhAPgEh7PCUi6tuXaMcOz681MhWq\nsnXoYLwF1hvDhxN9+KH381q1YgGTlycfe+ABotdfN2c8hWgAoQLEA/AJK0RERQVfe948318byI6a\nkUixCHV35/xJJasUFEpf388+48wgWpi9UwbsDcQDWLJEbclVkpDAmxvSTn+gsV+NGrmKhGDGfnmi\npoZjPE6f9u11iYk8lwwfbnyfIBpAqAHxAPzCChGxZg3RyJGeXZXq0qIF5/K2a/CwVpaRvXvlWhbe\ncDg400fXrjz5b9rk/tz69Tke4t577ft+AHOAeIhcyspYNCxb5vm8ESN4rMzODu+sc9u3cypWX+jd\nm2PI6qYODxSIBhCqQDyAgAi2iMjLIxoyhAddvWRnh96Oe91UslI7cSLwa6ens78z1pCRA8RDZJKV\n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\n",
"text/plain": [
"Graphics object consisting of 121 graphics primitives"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"graph_y0 = E[3].plot(chart=stereoN, ambient_coords=(x,z),\n",
" fixed_coords={y: 0}, number_values=11,\n",
" ranges={x: (-2,2), z: (-1,1)}, scale=0.4)\n",
"show(graph_y0, aspect_ratio=1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"A 3D view of $\\varepsilon_3$, in terms of the stereographic coordinates $(x,y,z)$:"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n"
],
"text/plain": [
"Graphics3d Object"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"graph = E[3].plot(chart=stereoN, max_range=1, number_values=7, \n",
" scale=0.25, label_axes=False)\n",
"show(graph, viewer=viewer3D, online=True, axes_labels=['x','y','z'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "SageMath 8.1.rc0",
"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.14"
}
},
"nbformat": 4,
"nbformat_minor": 0
}