Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

Github repo cloud-examples: https://github.com/sagemath/cloud-examples

Views: 8060
License: MIT

Hyperbolic plane H2\mathbb{H}^2

This worksheet illustrates some features of SageManifolds (v0.8) on computations regarding the hyperbolic plane.

First we set up the notebook to display mathematical objects using LaTeX formatting:

%auto typeset_mode(True, display=False)

We also define a viewer for 3D plots:

viewer3D = 'tachyon' # must be 'jmol', 'tachyon' or None (default)

We declare H2\mathbb{H}^2 as a 2-dimensional differentiable manifold:

H2 = Manifold(2, 'H2', latex_name=r'\mathbb{H}^2', start_index=1) print H2 H2
2-dimensional manifold 'H2'
H2\mathbb{H}^2

We shall introduce charts on H2\mathbb{H}^2 that are related to various models of the hyperbolic plane as submanifolds of R3\mathbb{R}^3. Therefore, we start by declaring R3\mathbb{R}^3 as a 3-dimensional manifold equiped with a global chart: the chart of Cartesian coordinates (X,Y,Z)(X,Y,Z):

R3 = Manifold(3, 'R3', latex_name=r'\mathbb{R}^3', start_index=1) X3.<X,Y,Z> = R3.chart() X3
(R3,(X,Y,Z))\left(\mathbb{R}^3,(X, Y, Z)\right)

Hyperboloid model

The first chart we introduce is related to the hyperboloid model of H2\mathbb{H}^2, namely to the representation of H2\mathbb{H}^2 as the upper sheet (Z>0Z>0) of the hyperboloid of two sheets defined in R3\mathbb{R}^3 by the equation X2+Y2Z2=1X^2 + Y^2 - Z^2 = -1:

X_hyp.<X,Y> = H2.chart() X_hyp
(H2,(X,Y))\left(\mathbb{H}^2,(X, Y)\right)

The corresponding embedding of H2\mathbb{H}^2 in R3\mathbb{R}^3 is

Phi1 = H2.diff_mapping(R3, [X, Y, sqrt(1+X^2+Y^2)], name='Phi_1', latex_name=r'\Phi_1') Phi1.display()
Φ1:H2R3(X,Y)(X,Y,Z)=(X,Y,X2+Y2+1)\begin{array}{llcl} \Phi_1:& \mathbb{H}^2 & \longrightarrow & \mathbb{R}^3 \\ & \left(X, Y\right) & \longmapsto & \left(X, Y, Z\right) = \left(X, Y, \sqrt{X^{2} + Y^{2} + 1}\right) \end{array}

By plotting the chart (H2,(X,Y))\left(\mathbb{H}^2,(X,Y)\right) in terms of the Cartesian coordinates of R3\mathbb{R}^3, we get a graphical view of Φ1(H2)\Phi_1(\mathbb{H}^2):

show(X_hyp.plot(X3, mapping=Phi1, nb_values=15, color='blue'), aspect_ratio=1, viewer=viewer3D, figsize=7)

A second chart is obtained from the polar coordinates (r,φ)(r,\varphi) associated with (X,Y)(X,Y). Contrary to (X,Y)(X,Y), the polar chart is not defined on the whole H2\mathbb{H}^2, but on the complement UU of the segment {Y=0,x0}\{Y=0, x\geq 0\}:

U = H2.open_subset('U', coord_def={X_hyp: (Y!=0, X<0)}) print U
open subset 'U' of the 2-dimensional manifold 'H2'

Note that (y!=0, x<0) stands for y0y\not=0 OR x<0x<0; the condition y0y\not=0 AND x<0x<0 would have been written [y!=0, x<0] instead.

X_pol.<r,ph> = U.chart(r'r:(0,+oo) ph:(0,2*pi):\varphi') X_pol
(U,(r,φ))\left(U,(r, {\varphi})\right)
X_pol.coord_range()
r: (0,+);φ: (0,2π)r :\ \left( 0 , +\infty \right) ;\quad {\varphi} :\ \left( 0 , 2 \, \pi \right)

We specify the transition map between the charts (U,(r,φ))\left(U,(r,\varphi)\right) and (H2,(X,Y))\left(\mathbb{H}^2,(X,Y)\right) as X=rcosφX=r\cos\varphi, Y=rsinφY=r\sin\varphi:

pol_to_hyp = X_pol.transition_map(X_hyp, [r*cos(ph), r*sin(ph)]) pol_to_hyp
(U,(r,φ))(U,(X,Y))\left(U,(r, {\varphi})\right) \rightarrow \left(U,(X, Y)\right)
pol_to_hyp.display()
{X=rcos(φ)Y=rsin(φ)\left\{\begin{array}{lcl} X & = & r \cos\left({\varphi}\right) \\ Y & = & r \sin\left({\varphi}\right) \end{array}\right.
pol_to_hyp.set_inverse(sqrt(X^2+Y^2), atan2(Y, X))
Check of the inverse coordinate transformation: r == r ph == arctan2(r*sin(ph), r*cos(ph)) X == X Y == Y
pol_to_hyp.inverse().display()
{r=X2+Y2φ=arctan(Y,X)\left\{\begin{array}{lcl} r & = & \sqrt{X^{2} + Y^{2}} \\ {\varphi} & = & \arctan\left(Y, X\right) \end{array}\right.

The restriction of the embedding Φ1\Phi_1 to UU has then two coordinate expressions:

Phi1.restrict(U).display()
Φ1:UR3(X,Y)(X,Y,Z)=(X,Y,X2+Y2+1)(r,φ)(X,Y,Z)=(rcos(φ),rsin(φ),r2+1)\begin{array}{llcl} \Phi_1:& U & \longrightarrow & \mathbb{R}^3 \\ & \left(X, Y\right) & \longmapsto & \left(X, Y, Z\right) = \left(X, Y, \sqrt{X^{2} + Y^{2} + 1}\right) \\ & \left(r, {\varphi}\right) & \longmapsto & \left(X, Y, Z\right) = \left(r \cos\left({\varphi}\right), r \sin\left({\varphi}\right), \sqrt{r^{2} + 1}\right) \end{array}
graph_hyp = X_pol.plot(X3, mapping=Phi1.restrict(U), nb_values=15, ranges={r: (0,3)}, color='blue') show(graph_hyp, aspect_ratio=1, viewer=viewer3D, figsize=7)
Phi1._coord_expression
{((H2,(X,Y)),(R3,(X,Y,Z))):(X,Y,X2+Y2+1)}\left\{\left(\left(\mathbb{H}^2,(X, Y)\right), \left(\mathbb{R}^3,(X, Y, Z)\right)\right) : \left(X, Y, \sqrt{X^{2} + Y^{2} + 1}\right)\right\}

Metric and curvature

The metric on H2\mathbb{H}^2 is that induced by the Minkowksy metric on R3\mathbb{R}^3: $$ \eta = \mathrm{d}X\otimes\mathrm{d}X + \mathrm{d}Y\otimes\mathrm{d}Y

  • \mathrm{d}Z\otimes\mathrm{d}Z $$

eta = R3.lorentz_metric('eta', latex_name=r'\eta') eta[1,1] = 1 ; eta[2,2] = 1 ; eta[3,3] = -1 eta.display()
η=dXdX+dYdYdZdZ\eta = \mathrm{d} X\otimes \mathrm{d} X+\mathrm{d} Y\otimes \mathrm{d} Y-\mathrm{d} Z\otimes \mathrm{d} Z
g = H2.riemann_metric('g') g.set( Phi1.pullback(eta) ) g.display()
g=(Y2+1X2+Y2+1)dXdX+(XYX2+Y2+1)dXdY+(XYX2+Y2+1)dYdX+(X2+1X2+Y2+1)dYdYg = \left( \frac{Y^{2} + 1}{X^{2} + Y^{2} + 1} \right) \mathrm{d} X\otimes \mathrm{d} X + \left( -\frac{X Y}{X^{2} + Y^{2} + 1} \right) \mathrm{d} X\otimes \mathrm{d} Y + \left( -\frac{X Y}{X^{2} + Y^{2} + 1} \right) \mathrm{d} Y\otimes \mathrm{d} X + \left( \frac{X^{2} + 1}{X^{2} + Y^{2} + 1} \right) \mathrm{d} Y\otimes \mathrm{d} Y

The expression of the metric tensor in terms of the polar coordinates is

g.display(X_pol.frame(), X_pol)
g=(1r2+1)drdr+r2dφdφg = \left( \frac{1}{r^{2} + 1} \right) \mathrm{d} r\otimes \mathrm{d} r + r^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}

The Riemann curvature tensor associated with gg is

Riem = g.riemann() print Riem
tensor field 'Riem(g)' of type (1,3) on the 2-dimensional manifold 'H2'
Riem.display(X_pol.frame(), X_pol)
Riem(g)=r2rdφdrdφ+r2rdφdφdr+(1r2+1)φdrdrdφ+(1r2+1)φdrdφdr\mathrm{Riem}\left(g\right) = -r^{2} \frac{\partial}{\partial r }\otimes \mathrm{d} {\varphi}\otimes \mathrm{d} r\otimes \mathrm{d} {\varphi} + r^{2} \frac{\partial}{\partial r }\otimes \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}\otimes \mathrm{d} r + \left( \frac{1}{r^{2} + 1} \right) \frac{\partial}{\partial {\varphi} }\otimes \mathrm{d} r\otimes \mathrm{d} r\otimes \mathrm{d} {\varphi} + \left( -\frac{1}{r^{2} + 1} \right) \frac{\partial}{\partial {\varphi} }\otimes \mathrm{d} r\otimes \mathrm{d} {\varphi}\otimes \mathrm{d} r

The Ricci tensor and the Ricci scalar:

Ric = g.ricci() print Ric
field of symmetric bilinear forms 'Ric(g)' on the 2-dimensional manifold 'H2'
Ric.display(X_pol.frame(), X_pol)
Ric(g)=(1r2+1)drdrr2dφdφ\mathrm{Ric}\left(g\right) = \left( -\frac{1}{r^{2} + 1} \right) \mathrm{d} r\otimes \mathrm{d} r -r^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}
Rscal = g.ricci_scalar() print Rscal
scalar field 'r(g)' on the 2-dimensional manifold 'H2'
Rscal.display()
r(g):H2R(X,Y)2on U:(r,φ)2\begin{array}{llcl} \mathrm{r}\left(g\right):& \mathbb{H}^2 & \longrightarrow & \mathbb{R} \\ & \left(X, Y\right) & \longmapsto & -2 \\ \mbox{on}\ U : & \left(r, {\varphi}\right) & \longmapsto & -2 \end{array}

Hence we recover the fact that (H2,g)(\mathbb{H}^2,g) is a space of constant negative curvature.

In dimension 2, the Riemann curvature tensor is entirely determined by the Ricci scalar RR according to

R jlki=R2(δ kigjlδ ligjk)R^i_{\ \, jlk} = \frac{R}{2} \left( \delta^i_{\ \, k} g_{jl} - \delta^i_{\ \, l} g_{jk} \right)

Let us check this formula here, under the form R jlki=Rgj[kδ l]iR^i_{\ \, jlk} = -R g_{j[k} \delta^i_{\ \, l]}:

delta = H2.tangent_identity_field() Riem == - Rscal*(g*delta).antisymmetrize(2,3) # 2,3 = last positions of the type-(1,3) tensor g*delta
True\mathrm{True}

Similarly the relation Ric=(R/2)  g\mathrm{Ric} = (R/2)\; g must hold:

Ric == (Rscal/2)*g
True\mathrm{True}

Poincaré disk model

The Poincaré disk model of H2\mathbb{H}^2 is obtained by stereographic projection from the point S=(0,0,1)S=(0,0,-1) of the hyperboloid model to the plane Z=0Z=0. The radial coordinate RR of the image of a point of polar coordinate (r,φ)(r,\varphi) is R=r1+1+r2. R = \frac{r}{1+\sqrt{1+r^2}}. Hence we define the Poincaré disk chart on H2\mathbb{H}^2 by

X_Pdisk.<R,ph> = U.chart(r'R:(0,1) ph:(0,2*pi):\varphi') X_Pdisk
(U,(R,φ))\left(U,(R, {\varphi})\right)
X_Pdisk.coord_range()
R: (0,1);φ: (0,2π)R :\ \left( 0 , 1 \right) ;\quad {\varphi} :\ \left( 0 , 2 \, \pi \right)

and relate it to the hyperboloid polar chart by

pol_to_Pdisk = X_pol.transition_map(X_Pdisk, [r/(1+sqrt(1+r^2)), ph]) pol_to_Pdisk
(U,(r,φ))(U,(R,φ))\left(U,(r, {\varphi})\right) \rightarrow \left(U,(R, {\varphi})\right)
pol_to_Pdisk.display()
{R=rr2+1+1φ=φ\left\{\begin{array}{lcl} R & = & \frac{r}{\sqrt{r^{2} + 1} + 1} \\ {\varphi} & = & {\varphi} \end{array}\right.
pol_to_Pdisk.set_inverse(2*R/(1-R^2), ph) pol_to_Pdisk.inverse().display()
Check of the inverse coordinate transformation: r == r ph == ph R == R ph == ph
{r=2RR21φ=φ\left\{\begin{array}{lcl} r & = & -\frac{2 \, R}{R^{2} - 1} \\ {\varphi} & = & {\varphi} \end{array}\right.

A view of the Poincaré disk chart via the embedding Φ1\Phi_1:

show(X_Pdisk.plot(X3, mapping=Phi1.restrict(U), ranges={R: (0,0.9)}, color='blue', nb_values=15), aspect_ratio=1, viewer=viewer3D, figsize=7)

The expression of the metric tensor in terms of coordinates (R,φ)(R,\varphi):

g.display(X_Pdisk.frame(), X_Pdisk)
g=(4R42R2+1)dRdR+(4R2R42R2+1)dφdφg = \left( \frac{4}{R^{4} - 2 \, R^{2} + 1} \right) \mathrm{d} R\otimes \mathrm{d} R + \left( \frac{4 \, R^{2}}{R^{4} - 2 \, R^{2} + 1} \right) \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}

We may factorize each metric component:

for i in [1,2]: g[X_Pdisk.frame(), i, i, X_Pdisk].factor() g.display(X_Pdisk.frame(), X_Pdisk)
4(R+1)2(R1)2\frac{4}{{\left(R + 1\right)}^{2} {\left(R - 1\right)}^{2}}
4R2(R+1)2(R1)2\frac{4 \, R^{2}}{{\left(R + 1\right)}^{2} {\left(R - 1\right)}^{2}}
g=4(R+1)2(R1)2dRdR+4R2(R+1)2(R1)2dφdφg = \frac{4}{{\left(R + 1\right)}^{2} {\left(R - 1\right)}^{2}} \mathrm{d} R\otimes \mathrm{d} R + \frac{4 \, R^{2}}{{\left(R + 1\right)}^{2} {\left(R - 1\right)}^{2}} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}

Cartesian coordinates on the Poincaré disk

Let us introduce Cartesian coordinates (u,v)(u,v) on the Poincaré disk; since the latter has a unit radius, this amounts to define the following chart on H2\mathbb{H}^2:

X_Pdisk_cart.<u,v> = H2.chart('u:(-1,1) v:(-1,1)') X_Pdisk_cart.add_restrictions(u^2+v^2 < 1) X_Pdisk_cart
(H2,(u,v))\left(\mathbb{H}^2,(u, v)\right)

On UU, the Cartesian coordinates (u,v)(u,v) are related to the polar coordinates (R,φ)(R,\varphi) by the standard formulas:

Pdisk_to_Pdisk_cart = X_Pdisk.transition_map(X_Pdisk_cart, [R*cos(ph), R*sin(ph)]) Pdisk_to_Pdisk_cart
(U,(R,φ))(U,(u,v))\left(U,(R, {\varphi})\right) \rightarrow \left(U,(u, v)\right)
Pdisk_to_Pdisk_cart.display()
{u=Rcos(φ)v=Rsin(φ)\left\{\begin{array}{lcl} u & = & R \cos\left({\varphi}\right) \\ v & = & R \sin\left({\varphi}\right) \end{array}\right.
Pdisk_to_Pdisk_cart.set_inverse(sqrt(u^2+v^2), atan2(v, u)) Pdisk_to_Pdisk_cart.inverse().display()
Check of the inverse coordinate transformation: R == R ph == arctan2(R*sin(ph), R*cos(ph)) u == u v == v
{R=u2+v2φ=arctan(v,u)\left\{\begin{array}{lcl} R & = & \sqrt{u^{2} + v^{2}} \\ {\varphi} & = & \arctan\left(v, u\right) \end{array}\right.

The embedding of H2\mathbb{H}^2 in R3\mathbb{R}^3 associated with the Poincaré disk model is naturally defined as

Phi2 = H2.diff_mapping(R3, {(X_Pdisk_cart, X3): [u, v, 0]}, name='Phi_2', latex_name=r'\Phi_2') Phi2.display()
Φ2:H2R3(u,v)(X,Y,Z)=(u,v,0)\begin{array}{llcl} \Phi_2:& \mathbb{H}^2 & \longrightarrow & \mathbb{R}^3 \\ & \left(u, v\right) & \longmapsto & \left(X, Y, Z\right) = \left(u, v, 0\right) \end{array}

Let us use it to draw the Poincaré disk in R3\mathbb{R}^3:

graph_disk_uv = X_Pdisk_cart.plot(X3, mapping=Phi2, nb_values=15) show(graph_disk_uv, viewer=viewer3D, figsize=7)

On UU, the change of coordinates (r,φ)(u,v)(r,\varphi) \rightarrow (u,v) is obtained by combining the changes (r,φ)(R,φ)(r,\varphi) \rightarrow (R,\varphi) and (R,φ)(u,v)(R,\varphi) \rightarrow (u,v):

pol_to_Pdisk_cart = Pdisk_to_Pdisk_cart * pol_to_Pdisk pol_to_Pdisk_cart
(U,(r,φ))(U,(u,v))\left(U,(r, {\varphi})\right) \rightarrow \left(U,(u, v)\right)
pol_to_Pdisk_cart.display()
{u=rcos(φ)r2+1+1v=rsin(φ)r2+1+1\left\{\begin{array}{lcl} u & = & \frac{r \cos\left({\varphi}\right)}{\sqrt{r^{2} + 1} + 1} \\ v & = & \frac{r \sin\left({\varphi}\right)}{\sqrt{r^{2} + 1} + 1} \end{array}\right.

Still on UU, the change of coordinates (X,Y)(u,v)(X,Y) \rightarrow (u,v) is obtained by combining the changes (X,Y)(r,φ)(X,Y) \rightarrow (r,\varphi) with (r,φ)(u,v)(r,\varphi) \rightarrow (u,v):

hyp_to_Pdisk_cart_U = pol_to_Pdisk_cart * pol_to_hyp.inverse() hyp_to_Pdisk_cart_U
(U,(X,Y))(U,(u,v))\left(U,(X, Y)\right) \rightarrow \left(U,(u, v)\right)
hyp_to_Pdisk_cart_U.display()
{u=XX2+Y2+1+1v=YX2+Y2+1+1\left\{\begin{array}{lcl} u & = & \frac{X}{\sqrt{X^{2} + Y^{2} + 1} + 1} \\ v & = & \frac{Y}{\sqrt{X^{2} + Y^{2} + 1} + 1} \end{array}\right.

We use the above expression to extend the change of coordinates (X,Y)(u,v)(X,Y) \rightarrow (u,v) from UU to the whole manifold H2\mathbb{H}^2:

hyp_to_Pdisk_cart = X_hyp.transition_map(X_Pdisk_cart, hyp_to_Pdisk_cart_U(X,Y)) hyp_to_Pdisk_cart
(H2,(X,Y))(H2,(u,v))\left(\mathbb{H}^2,(X, Y)\right) \rightarrow \left(\mathbb{H}^2,(u, v)\right)
hyp_to_Pdisk_cart.display()
{u=XX2+Y2+1+1v=YX2+Y2+1+1\left\{\begin{array}{lcl} u & = & \frac{X}{\sqrt{X^{2} + Y^{2} + 1} + 1} \\ v & = & \frac{Y}{\sqrt{X^{2} + Y^{2} + 1} + 1} \end{array}\right.
hyp_to_Pdisk_cart.set_inverse(2*u/(1-u^2-v^2), 2*v/(1-u^2-v^2)) hyp_to_Pdisk_cart.inverse().display()
Check of the inverse coordinate transformation: X == X Y == Y u == -2*u*abs(u^2 + v^2 - 1)/(u^4 + 2*u^2*v^2 + v^4 + (u^2 + v^2 - 1)*abs(u^2 + v^2 - 1) - 1) v == -2*v*abs(u^2 + v^2 - 1)/(u^4 + 2*u^2*v^2 + v^4 + (u^2 + v^2 - 1)*abs(u^2 + v^2 - 1) - 1)
{X=2uu2+v21Y=2vu2+v21\left\{\begin{array}{lcl} X & = & -\frac{2 \, u}{u^{2} + v^{2} - 1} \\ Y & = & -\frac{2 \, v}{u^{2} + v^{2} - 1} \end{array}\right.
graph_Pdisk = X_pol.plot(X3, mapping=Phi2.restrict(U), ranges={r: (0, 20)}, nb_values=15, label_axes=False) show(graph_hyp + graph_Pdisk, aspect_ratio=1, viewer=viewer3D, figsize=7)
X_pol.plot(X_Pdisk_cart, ranges={r: (0, 20)}, nb_values=15)

Metric tensor in Poincaré disk coordinates (u,v)(u,v)

From now on, we are using the Poincaré disk chart (H2,(u,v))(\mathbb{H}^2,(u,v)) as the default one on H2\mathbb{H}^2:

H2.set_default_chart(X_Pdisk_cart) H2.set_default_frame(X_Pdisk_cart.frame())
g.display(X_hyp.frame())
g=(u4+v4+2(u2+1)v22u2+1u4+v4+2(u2+1)v2+2u2+1)dXdX+(4uvu4+v4+2(u2+1)v2+2u2+1)dXdY+(4uvu4+v4+2(u2+1)v2+2u2+1)dYdX+(u4+v4+2(u21)v2+2u2+1u4+v4+2(u2+1)v2+2u2+1)dYdYg = \left( \frac{u^{4} + v^{4} + 2 \, {\left(u^{2} + 1\right)} v^{2} - 2 \, u^{2} + 1}{u^{4} + v^{4} + 2 \, {\left(u^{2} + 1\right)} v^{2} + 2 \, u^{2} + 1} \right) \mathrm{d} X\otimes \mathrm{d} X + \left( -\frac{4 \, u v}{u^{4} + v^{4} + 2 \, {\left(u^{2} + 1\right)} v^{2} + 2 \, u^{2} + 1} \right) \mathrm{d} X\otimes \mathrm{d} Y + \left( -\frac{4 \, u v}{u^{4} + v^{4} + 2 \, {\left(u^{2} + 1\right)} v^{2} + 2 \, u^{2} + 1} \right) \mathrm{d} Y\otimes \mathrm{d} X + \left( \frac{u^{4} + v^{4} + 2 \, {\left(u^{2} - 1\right)} v^{2} + 2 \, u^{2} + 1}{u^{4} + v^{4} + 2 \, {\left(u^{2} + 1\right)} v^{2} + 2 \, u^{2} + 1} \right) \mathrm{d} Y\otimes \mathrm{d} Y
g.display()
g=(4u4+v4+2(u21)v22u2+1)dudu+(4u4+v4+2(u21)v22u2+1)dvdvg = \left( \frac{4}{u^{4} + v^{4} + 2 \, {\left(u^{2} - 1\right)} v^{2} - 2 \, u^{2} + 1} \right) \mathrm{d} u\otimes \mathrm{d} u + \left( \frac{4}{u^{4} + v^{4} + 2 \, {\left(u^{2} - 1\right)} v^{2} - 2 \, u^{2} + 1} \right) \mathrm{d} v\otimes \mathrm{d} v
g[1,1].factor() ; g[2,2].factor() g.display()
4(u2+v21)2\frac{4}{{\left(u^{2} + v^{2} - 1\right)}^{2}}
4(u2+v21)2\frac{4}{{\left(u^{2} + v^{2} - 1\right)}^{2}}
g=4(u2+v21)2dudu+4(u2+v21)2dvdvg = \frac{4}{{\left(u^{2} + v^{2} - 1\right)}^{2}} \mathrm{d} u\otimes \mathrm{d} u + \frac{4}{{\left(u^{2} + v^{2} - 1\right)}^{2}} \mathrm{d} v\otimes \mathrm{d} v

Hemispherical model

The hemispherical model of H2\mathbb{H}^2 is obtained by the inverse stereographic projection from the point S=(0,0,1)S = (0,0,-1) of the Poincaré disk to the unit sphere X2+Y2+Z2=1X^2+Y^2+Z^2=1. This induces a spherical coordinate chart on UU:

X_spher.<th,ph> = U.chart(r'th:(0,pi/2):\theta ph:(0,2*pi):\varphi') X_spher
(U,(θ,φ))\left(U,({\theta}, {\varphi})\right)

From the stereographic projection from SS, we obtain that sinθ=2R1+R2\begin{equation} \sin\theta = \frac{2R}{1+R^2} \end{equation} Hence the transition map:

Pdisk_to_spher = X_Pdisk.transition_map(X_spher, [arcsin(2*R/(1+R^2)), ph]) Pdisk_to_spher
(U,(R,φ))(U,(θ,φ))\left(U,(R, {\varphi})\right) \rightarrow \left(U,({\theta}, {\varphi})\right)
Pdisk_to_spher.display()
{θ=arcsin(2RR2+1)φ=φ\left\{\begin{array}{lcl} {\theta} & = & \arcsin\left(\frac{2 \, R}{R^{2} + 1}\right) \\ {\varphi} & = & {\varphi} \end{array}\right.
Pdisk_to_spher.set_inverse(sin(th)/(1+cos(th)), ph) Pdisk_to_spher.inverse().display()
Check of the inverse coordinate transformation: R == R ph == ph th == th ph == ph
{R=sin(θ)cos(θ)+1φ=φ\left\{\begin{array}{lcl} R & = & \frac{\sin\left({\theta}\right)}{\cos\left({\theta}\right) + 1} \\ {\varphi} & = & {\varphi} \end{array}\right.

In the spherical coordinates (θ,φ)(\theta,\varphi), the metric takes the following form:

g.display(X_spher.frame(), X_spher)
g=1cos(θ)2dθdθ+sin(θ)2cos(θ)2dφdφg = \frac{1}{\cos\left({\theta}\right)^{2}} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \frac{\sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2}} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}

The embedding of H2\mathbb{H}^2 in R3\mathbb{R}^3 associated with the hemispherical model is naturally:

Phi3 = H2.diff_mapping(R3, {(X_spher, X3): [sin(th)*cos(ph), sin(th)*sin(ph), cos(th)]}, name='Phi_3', latex_name=r'\Phi_3') Phi3.display()
Φ3:H2R3on U:(R,φ)(X,Y,Z)=(2Rcos(φ)R2+1,2Rsin(φ)R2+1,R21R2+1)on U:(θ,φ)(X,Y,Z)=(cos(φ)sin(θ),sin(φ)sin(θ),cos(θ))\begin{array}{llcl} \Phi_3:& \mathbb{H}^2 & \longrightarrow & \mathbb{R}^3 \\ \mbox{on}\ U : & \left(R, {\varphi}\right) & \longmapsto & \left(X, Y, Z\right) = \left(\frac{2 \, R \cos\left({\varphi}\right)}{R^{2} + 1}, \frac{2 \, R \sin\left({\varphi}\right)}{R^{2} + 1}, -\frac{R^{2} - 1}{R^{2} + 1}\right) \\ \mbox{on}\ U : & \left({\theta}, {\varphi}\right) & \longmapsto & \left(X, Y, Z\right) = \left(\cos\left({\varphi}\right) \sin\left({\theta}\right), \sin\left({\varphi}\right) \sin\left({\theta}\right), \cos\left({\theta}\right)\right) \end{array}
graph_spher = X_pol.plot(X3, mapping=Phi3, ranges={r: (0, 20)}, nb_values=15, color='orange', label_axes=False) show(graph_hyp + graph_Pdisk + graph_spher, aspect_ratio=1, viewer=viewer3D, figsize=7)

Poincaré half-plane model

The Poincaré half-plane model of H2\mathbb{H}^2 is obtained by stereographic projection from the point W=(1,0,0)W=(-1,0,0) of the hemispherical model to the plane X=1X=1. This induces a new coordinate chart on H2\mathbb{H}^2 by setting (x,y)=(Y,Z)(x,y)=(Y,Z) in the plane X=1X=1:

X_hplane.<x,y> = H2.chart('x y:(0,+oo)') X_hplane
(H2,(x,y))\left(\mathbb{H}^2,(x, y)\right)

The coordinate transformation (θ,φ)(x,y)(\theta,\varphi)\rightarrow (x,y) is easily deduced from the stereographic projection from the point WW:

spher_to_hplane = X_spher.transition_map(X_hplane, [2*sin(th)*sin(ph)/(1+sin(th)*cos(ph)), 2*cos(th)/(1+sin(th)*cos(ph))]) spher_to_hplane
(U,(θ,φ))(U,(x,y))\left(U,({\theta}, {\varphi})\right) \rightarrow \left(U,(x, y)\right)
spher_to_hplane.display()
{x=2sin(φ)sin(θ)cos(φ)sin(θ)+1y=2cos(θ)cos(φ)sin(θ)+1\left\{\begin{array}{lcl} x & = & \frac{2 \, \sin\left({\varphi}\right) \sin\left({\theta}\right)}{\cos\left({\varphi}\right) \sin\left({\theta}\right) + 1} \\ y & = & \frac{2 \, \cos\left({\theta}\right)}{\cos\left({\varphi}\right) \sin\left({\theta}\right) + 1} \end{array}\right.
Pdisk_to_hplane = spher_to_hplane * Pdisk_to_spher Pdisk_to_hplane
(U,(R,φ))(U,(x,y))\left(U,(R, {\varphi})\right) \rightarrow \left(U,(x, y)\right)
Pdisk_to_hplane.display()
{x=4Rsin(φ)R2+2Rcos(φ)+1y=2(R21)R2+2Rcos(φ)+1\left\{\begin{array}{lcl} x & = & \frac{4 \, R \sin\left({\varphi}\right)}{R^{2} + 2 \, R \cos\left({\varphi}\right) + 1} \\ y & = & -\frac{2 \, {\left(R^{2} - 1\right)}}{R^{2} + 2 \, R \cos\left({\varphi}\right) + 1} \end{array}\right.
Pdisk_cart_to_hplane_U = Pdisk_to_hplane * Pdisk_to_Pdisk_cart.inverse() Pdisk_cart_to_hplane_U
(U,(u,v))(U,(x,y))\left(U,(u, v)\right) \rightarrow \left(U,(x, y)\right)
Pdisk_cart_to_hplane_U.display()
{x=4vu2+v2+2u+1y=2(u2+v21)u2+v2+2u+1\left\{\begin{array}{lcl} x & = & \frac{4 \, v}{u^{2} + v^{2} + 2 \, u + 1} \\ y & = & -\frac{2 \, {\left(u^{2} + v^{2} - 1\right)}}{u^{2} + v^{2} + 2 \, u + 1} \end{array}\right.

Let us use the above formula to define the transition map (u,v)(x,y)(u,v)\rightarrow (x,y) on the whole manifold H2\mathbb{H}^2 (and not only on UU):

Pdisk_cart_to_hplane = X_Pdisk_cart.transition_map(X_hplane, Pdisk_cart_to_hplane_U(u,v)) Pdisk_cart_to_hplane
(H2,(u,v))(H2,(x,y))\left(\mathbb{H}^2,(u, v)\right) \rightarrow \left(\mathbb{H}^2,(x, y)\right)
Pdisk_cart_to_hplane.display()
{x=4vu2+v2+2u+1y=2(u2+v21)u2+v2+2u+1\left\{\begin{array}{lcl} x & = & \frac{4 \, v}{u^{2} + v^{2} + 2 \, u + 1} \\ y & = & -\frac{2 \, {\left(u^{2} + v^{2} - 1\right)}}{u^{2} + v^{2} + 2 \, u + 1} \end{array}\right.
Pdisk_cart_to_hplane.set_inverse((4-x^2-y^2)/(x^2+(2+y)^2), 4*x/(x^2+(2+y)^2)) Pdisk_cart_to_hplane.inverse().display()
Check of the inverse coordinate transformation: u == u v == v x == x y == y
{u=x2+y24x2+(y+2)2v=4xx2+(y+2)2\left\{\begin{array}{lcl} u & = & -\frac{x^{2} + y^{2} - 4}{x^{2} + {\left(y + 2\right)}^{2}} \\ v & = & \frac{4 \, x}{x^{2} + {\left(y + 2\right)}^{2}} \end{array}\right.

Since the coordinates (x,y)(x,y) correspond to (Y,Z)(Y,Z) in the plane X=1X=1, the embedding of H2\mathbb{H}^2 in R3\mathbb{R}^3 naturally associated with the Poincaré half-plane model is

Phi4 = H2.diff_mapping(R3, {(X_hplane, X3): [1, x, y]}, name='Phi_4', latex_name=r'\Phi_4') Phi4.display()
Φ4:H2R3(u,v)(X,Y,Z)=(1,4vu2+v2+2u+1,2(u2+v21)u2+v2+2u+1)(x,y)(X,Y,Z)=(1,x,y)\begin{array}{llcl} \Phi_4:& \mathbb{H}^2 & \longrightarrow & \mathbb{R}^3 \\ & \left(u, v\right) & \longmapsto & \left(X, Y, Z\right) = \left(1, \frac{4 \, v}{u^{2} + v^{2} + 2 \, u + 1}, -\frac{2 \, {\left(u^{2} + v^{2} - 1\right)}}{u^{2} + v^{2} + 2 \, u + 1}\right) \\ & \left(x, y\right) & \longmapsto & \left(X, Y, Z\right) = \left(1, x, y\right) \end{array}
graph_hplane = X_pol.plot(X3, mapping=Phi4.restrict(U), ranges={r: (0, 1.5)}, nb_values=15, color='brown', label_axes=False) show(graph_hyp + graph_Pdisk + graph_spher + graph_hplane, aspect_ratio=1, viewer=viewer3D, figsize=8)

Let us draw the grid of the hyperboloidal coordinates (r,φ)(r,\varphi) in terms of the half-plane coordinates (x,y)(x,y):

pol_to_hplane = Pdisk_to_hplane * pol_to_Pdisk
show(X_pol.plot(X_hplane, ranges={r: (0,24)}, style={r: '-', ph: '--'}, nb_values=15, plot_points=200, color='brown'), xmin=-5, xmax=5, ymin=0, ymax=5, aspect_ratio=1)

The solid curves are those along which rr varies while φ\varphi is kept constant. Conversely, the dashed curves are those along which φ\varphi varies, while rr is kept constant. We notice that the former curves are arcs of circles orthogonal to the half-plane boundary y=0y=0, hence they are geodesics of (H2,g)(\mathbb{H}^2,g). This is not surprising since they correspond to the intersections of the hyperboloid with planes through the origin (namely the plane φ=const\varphi=\mathrm{const}). The point (x,y)=(0,2)(x,y) = (0,2) corresponds to r=0r=0.

We may also depict the Poincaré disk coordinates (u,v)(u,v) in terms of the half-plane coordinates (x,y)(x,y):

### This plot unsuccesfuly converted to sagews ### # X_Pdisk_cart.plot(ranges={u: (-1, 0), v: (-1, 0)}, # style={u: '-', v: '--'}) + \ # X_Pdisk_cart.plot(ranges={u: (-1, 0), v: (0., 1)}, # style={u: '-', v: '--'}, color='orange') + \ # X_Pdisk_cart.plot(ranges={u: (0, 1), v: (-1, 0)}, # style={u: '-', v: '--'}, color='pink') + \ # X_Pdisk_cart.plot(ranges={u: (0, 1), v: (0, 1)}, # style={u: '-', v: '--'}, color='violet')
show(X_Pdisk_cart.plot(X_hplane, ranges={u: (-1, 0), v: (-1, 0)}, style={u: '-', v: '--'}) + \ X_Pdisk_cart.plot(X_hplane, ranges={u: (-1, 0), v: (0, 1)}, style={u: '-', v: '--'}, color='orange') + \ X_Pdisk_cart.plot(X_hplane, ranges={u: (0, 1), v: (-1, 0)}, style={u: '-', v: '--'}, color='pink') + \ X_Pdisk_cart.plot(X_hplane, ranges={u: (0, 1), v: (0, 1)}, style={u: '-', v: '--'}, color='violet'), xmin=-5, xmax=5, ymin=0, ymax=5, aspect_ratio=1)

The expression of the metric tensor in the half-plane coordinates (x,y)(x,y) is

g.display(X_hplane.frame(), X_hplane)
g=1y2dxdx+1y2dydyg = \frac{1}{y^{2}} \mathrm{d} x\otimes \mathrm{d} x + \frac{1}{y^{2}} \mathrm{d} y\otimes \mathrm{d} y

Summary

9 charts have been defined on H2\mathbb{H}^2:

H2.atlas()
[(H2,(X,Y))\left(\mathbb{H}^2,(X, Y)\right), (U,(X,Y))\left(U,(X, Y)\right), (U,(r,φ))\left(U,(r, {\varphi})\right), (U,(R,φ))\left(U,(R, {\varphi})\right), (H2,(u,v))\left(\mathbb{H}^2,(u, v)\right), (U,(u,v))\left(U,(u, v)\right), (U,(θ,φ))\left(U,({\theta}, {\varphi})\right), (H2,(x,y))\left(\mathbb{H}^2,(x, y)\right), (U,(x,y))\left(U,(x, y)\right)]

There are actually 6 main charts, the other ones being subcharts:

H2.top_charts()
[(H2,(X,Y))\left(\mathbb{H}^2,(X, Y)\right), (U,(r,φ))\left(U,(r, {\varphi})\right), (U,(R,φ))\left(U,(R, {\varphi})\right), (H2,(u,v))\left(\mathbb{H}^2,(u, v)\right), (U,(θ,φ))\left(U,({\theta}, {\varphi})\right), (H2,(x,y))\left(\mathbb{H}^2,(x, y)\right)]

The expression of the metric tensor in each of these charts is

for chart in H2.top_charts(): show(g.display(chart.frame(), chart))
g=(Y2+1X2+Y2+1)dXdX+(XYX2+Y2+1)dXdY+(XYX2+Y2+1)dYdX+(X2+1X2+Y2+1)dYdY\displaystyle g = \left( \frac{Y^{2} + 1}{X^{2} + Y^{2} + 1} \right) \mathrm{d} X\otimes \mathrm{d} X + \left( -\frac{X Y}{X^{2} + Y^{2} + 1} \right) \mathrm{d} X\otimes \mathrm{d} Y + \left( -\frac{X Y}{X^{2} + Y^{2} + 1} \right) \mathrm{d} Y\otimes \mathrm{d} X + \left( \frac{X^{2} + 1}{X^{2} + Y^{2} + 1} \right) \mathrm{d} Y\otimes \mathrm{d} Y
g=(1r2+1)drdr+r2dφdφ\displaystyle g = \left( \frac{1}{r^{2} + 1} \right) \mathrm{d} r\otimes \mathrm{d} r + r^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}
g=4(R+1)2(R1)2dRdR+4R2(R+1)2(R1)2dφdφ\displaystyle g = \frac{4}{{\left(R + 1\right)}^{2} {\left(R - 1\right)}^{2}} \mathrm{d} R\otimes \mathrm{d} R + \frac{4 \, R^{2}}{{\left(R + 1\right)}^{2} {\left(R - 1\right)}^{2}} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}
g=4(u2+v21)2dudu+4(u2+v21)2dvdv\displaystyle g = \frac{4}{{\left(u^{2} + v^{2} - 1\right)}^{2}} \mathrm{d} u\otimes \mathrm{d} u + \frac{4}{{\left(u^{2} + v^{2} - 1\right)}^{2}} \mathrm{d} v\otimes \mathrm{d} v
g=1cos(θ)2dθdθ+sin(θ)2cos(θ)2dφdφ\displaystyle g = \frac{1}{\cos\left({\theta}\right)^{2}} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \frac{\sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2}} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}
g=1y2dxdx+1y2dydy\displaystyle g = \frac{1}{y^{2}} \mathrm{d} x\otimes \mathrm{d} x + \frac{1}{y^{2}} \mathrm{d} y\otimes \mathrm{d} y

For each of these charts, the non-vanishing (and non-redundant w.r.t. the symmetry on the last 2 indices) Christoffel symbols of gg are

for chart in H2.top_charts(): show(chart) show(g.christoffel_symbols_display(chart=chart))
(H2,(X,Y))\displaystyle \left(\mathbb{H}^2,(X, Y)\right)
ΓXXXXXX=XY2+XX2+Y2+1ΓXXYXXY=X2YX2+Y2+1ΓXYYXYY=X3+XX2+Y2+1ΓYXXYXX=Y3+YX2+Y2+1ΓYXYYXY=XY2X2+Y2+1ΓYYYYYY=(X2+1)YX2+Y2+1\displaystyle \begin{array}{lcl} \Gamma_{ \phantom{\, X } \, X \, X }^{ \, X \phantom{\, X } \phantom{\, X } } & = & -\frac{X Y^{2} + X}{X^{2} + Y^{2} + 1} \\ \Gamma_{ \phantom{\, X } \, X \, Y }^{ \, X \phantom{\, X } \phantom{\, Y } } & = & \frac{X^{2} Y}{X^{2} + Y^{2} + 1} \\ \Gamma_{ \phantom{\, X } \, Y \, Y }^{ \, X \phantom{\, Y } \phantom{\, Y } } & = & -\frac{X^{3} + X}{X^{2} + Y^{2} + 1} \\ \Gamma_{ \phantom{\, Y } \, X \, X }^{ \, Y \phantom{\, X } \phantom{\, X } } & = & -\frac{Y^{3} + Y}{X^{2} + Y^{2} + 1} \\ \Gamma_{ \phantom{\, Y } \, X \, Y }^{ \, Y \phantom{\, X } \phantom{\, Y } } & = & \frac{X Y^{2}}{X^{2} + Y^{2} + 1} \\ \Gamma_{ \phantom{\, Y } \, Y \, Y }^{ \, Y \phantom{\, Y } \phantom{\, Y } } & = & -\frac{{\left(X^{2} + 1\right)} Y}{X^{2} + Y^{2} + 1} \end{array}
(U,(r,φ))\displaystyle \left(U,(r, {\varphi})\right)
Γrrrrrr=rr2+1Γrφφrφφ=r3rΓφrφφrφ=1r\displaystyle \begin{array}{lcl} \Gamma_{ \phantom{\, r } \, r \, r }^{ \, r \phantom{\, r } \phantom{\, r } } & = & -\frac{r}{r^{2} + 1} \\ \Gamma_{ \phantom{\, r } \, {\varphi} \, {\varphi} }^{ \, r \phantom{\, {\varphi} } \phantom{\, {\varphi} } } & = & -r^{3} - r \\ \Gamma_{ \phantom{\, {\varphi} } \, r \, {\varphi} }^{ \, {\varphi} \phantom{\, r } \phantom{\, {\varphi} } } & = & \frac{1}{r} \end{array}
(U,(R,φ))\displaystyle \left(U,(R, {\varphi})\right)
ΓRRRRRR=2RR21ΓRφφRφφ=R3+RR21ΓφRφφRφ=R2+1R3R\displaystyle \begin{array}{lcl} \Gamma_{ \phantom{\, R } \, R \, R }^{ \, R \phantom{\, R } \phantom{\, R } } & = & -\frac{2 \, R}{R^{2} - 1} \\ \Gamma_{ \phantom{\, R } \, {\varphi} \, {\varphi} }^{ \, R \phantom{\, {\varphi} } \phantom{\, {\varphi} } } & = & \frac{R^{3} + R}{R^{2} - 1} \\ \Gamma_{ \phantom{\, {\varphi} } \, R \, {\varphi} }^{ \, {\varphi} \phantom{\, R } \phantom{\, {\varphi} } } & = & -\frac{R^{2} + 1}{R^{3} - R} \end{array}
(H2,(u,v))\displaystyle \left(\mathbb{H}^2,(u, v)\right)
Γuuuuuu=2uu2+v21Γuuvuuv=2vu2+v21Γuvvuvv=2uu2+v21Γvuuvuu=2vu2+v21Γvuvvuv=2uu2+v21Γvvvvvv=2vu2+v21\displaystyle \begin{array}{lcl} \Gamma_{ \phantom{\, u } \, u \, u }^{ \, u \phantom{\, u } \phantom{\, u } } & = & -\frac{2 \, u}{u^{2} + v^{2} - 1} \\ \Gamma_{ \phantom{\, u } \, u \, v }^{ \, u \phantom{\, u } \phantom{\, v } } & = & -\frac{2 \, v}{u^{2} + v^{2} - 1} \\ \Gamma_{ \phantom{\, u } \, v \, v }^{ \, u \phantom{\, v } \phantom{\, v } } & = & \frac{2 \, u}{u^{2} + v^{2} - 1} \\ \Gamma_{ \phantom{\, v } \, u \, u }^{ \, v \phantom{\, u } \phantom{\, u } } & = & \frac{2 \, v}{u^{2} + v^{2} - 1} \\ \Gamma_{ \phantom{\, v } \, u \, v }^{ \, v \phantom{\, u } \phantom{\, v } } & = & -\frac{2 \, u}{u^{2} + v^{2} - 1} \\ \Gamma_{ \phantom{\, v } \, v \, v }^{ \, v \phantom{\, v } \phantom{\, v } } & = & -\frac{2 \, v}{u^{2} + v^{2} - 1} \end{array}
(U,(θ,φ))\displaystyle \left(U,({\theta}, {\varphi})\right)
Γθθθθθθ=sin(θ)cos(θ)Γθφφθφφ=sin(θ)cos(θ)Γφθφφθφ=1cos(θ)sin(θ)\displaystyle \begin{array}{lcl} \Gamma_{ \phantom{\, {\theta} } \, {\theta} \, {\theta} }^{ \, {\theta} \phantom{\, {\theta} } \phantom{\, {\theta} } } & = & \frac{\sin\left({\theta}\right)}{\cos\left({\theta}\right)} \\ \Gamma_{ \phantom{\, {\theta} } \, {\varphi} \, {\varphi} }^{ \, {\theta} \phantom{\, {\varphi} } \phantom{\, {\varphi} } } & = & -\frac{\sin\left({\theta}\right)}{\cos\left({\theta}\right)} \\ \Gamma_{ \phantom{\, {\varphi} } \, {\theta} \, {\varphi} }^{ \, {\varphi} \phantom{\, {\theta} } \phantom{\, {\varphi} } } & = & \frac{1}{\cos\left({\theta}\right) \sin\left({\theta}\right)} \end{array}
(H2,(x,y))\displaystyle \left(\mathbb{H}^2,(x, y)\right)
Γxxyxxy=1yΓyxxyxx=1yΓyyyyyy=1y\displaystyle \begin{array}{lcl} \Gamma_{ \phantom{\, x } \, x \, y }^{ \, x \phantom{\, x } \phantom{\, y } } & = & -\frac{1}{y} \\ \Gamma_{ \phantom{\, y } \, x \, x }^{ \, y \phantom{\, x } \phantom{\, x } } & = & \frac{1}{y} \\ \Gamma_{ \phantom{\, y } \, y \, y }^{ \, y \phantom{\, y } \phantom{\, y } } & = & -\frac{1}{y} \end{array}