CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
GitHub Repository: sagemanifolds/IntroToManifolds
Path: blob/main/07Manifold_FunPullb_Curves.ipynb
Views: 80
Kernel: SageMath 9.6

7. Smooth functions and pullbacks

This notebook is part of the Introduction to manifolds in SageMath by Andrzej Chrzeszczyk (Jan Kochanowski University of Kielce, Poland).

'SageMath version 9.6, Release Date: 2022-05-15'

Recall that if MM is a smooth manifold, the set of all smooth functions from MM to RR is denoted by C(M)C^∞(M). This set is a ring with the operations given by
ParseError: KaTeX parse error: Undefined control sequence: \label at position 105: …, \end{matrix} \̲l̲a̲b̲e̲l̲{}\tag{7.1} \en…
for f,gC(M),  aRf, g ∈ C^\infty(M),\ \ a ∈ R and pM.p ∈ M.

One can also define an additional operation (af)(p)=af(p),(a f )( p) = a f ( p),

for fC(M),  aRf∈ C^\infty(M),\ \ a ∈ R and pM.p ∈ M.

If ψψ is a smooth map from MM to a smooth manifold NN and fC(N)f ∈ C^∞ (N ), the pullback   ψf   \ \ ψ ^* f\ \ of ff under   ψ  \ \ ψ\ \ is defined by

ParseError: KaTeX parse error: Undefined control sequence: \label at position 33: …ψ^∗ f = f ◦ ψ. \̲l̲a̲b̲e̲l̲{}\tag{7.2} \en…

If ϕ \phi\ and  χ \ \chi\ are charts on MM and NN, respectively, then from   (ψf)φ1=(fχ1)(χψφ1)  \ \ (ψ^∗ f ) ◦ φ^{−1} = ( f ◦ χ^{−1} ) ◦ (χ ◦ ψ ◦ φ^{−1} )\ \ it follows that ψfC(M).ψ^∗ f ∈ C^∞ (M).

The operation ψψ^∗ is applied to functions defined on NN to produce functions defined on MM, hence the name pullback for ψψ^∗.

Example 7.1

If we denote by ψ\psi the coordinate change defined by x=rcos(ϕ),  y=rsin(ϕ)x=r\cos(\phi),\; y=r\sin(\phi) on the open set U={(r,ϕ):r>0,0<ϕ<2π},U=\{(r,\phi): r>0, 0<\phi <2\pi \}, then for a scalar function ff of variables x,y,x,y, the pullback ψf\psi^*f is the function (r,ϕ)f(rcos(ϕ),rsin(ϕ))(r,\phi)\to f(r\cos(\phi),r\sin(\phi)), defined on UU.

%display latex M = Manifold(2, 'R^2p') # manifold R^2 U = M.open_subset('U') # open subset of R2, # polar coord. on U: c_rphi.<r,phi>=U.chart(r'r:(0,oo) phi:(0,2*pi):\phi') N = Manifold(2, 'R^2c') # second copy of R^2 c_xy.<x,y> = N.chart() # Cartesian coordinates: # psi: M --> N : polar to Cart.: psi = U.diff_map(N, (r*cos(phi), r*sin(phi)),name=r'\psi') # f -scalar function on N f = N.scalar_field(function('f')(x,y), name='f') fplb=psi.pullback(f) # psi^*f -scalar func. on M fplb.disp() # show pullback

ψf:UR(r,ϕ)f(rcos(ϕ),rsin(ϕ))\displaystyle \begin{array}{llcl} {\psi}^*f:& U & \longrightarrow & \mathbb{R} \\ & \left(r, {\phi}\right) & \longmapsto & f\left(r \cos\left({\phi}\right), r \sin\left({\phi}\right)\right) \end{array}

If ψψ is a smooth map MNM\to N then ψ(af+bg)=aψf+bψg,\begin{equation} ψ^∗ (a f + bg) = aψ^∗ f + bψ^∗ g, \tag{7.3} \end{equation}
for f,gC(N)f, g ∈ C^∞ (N ) and a,bR.a, b ∈ R.

In fact ψ(af+bg)(p)=(af+bg)(ψ(p))=af(ψ(p))+bg(ψ(p))=a(ψf)(p)+b(ψg)(p)=(aψf+bψg)(p).ψ^∗ (a f + bg) ( p) = (a f + bg)(ψ( p)) = a f (ψ( p)) + bg(ψ( p))\\ = a(ψ^∗ f )( p) + b(ψ^∗ g)( p) = (aψ^∗ f + bψ^∗ g)( p).

If ψψ is a smooth map MNM\to N then ψ(fg)=(ψf)(ψg),\begin{equation} ψ^∗ ( f g) = (ψ^∗ f )(ψ^∗ g), \tag{7.4} \end{equation}
for f,gC(N)f, g ∈ C^∞ (N ).

The last relation follows from

ψ(fg)(p)=(fg)(ψ(p))=f(ψ(p))g(ψ(p))=(ψf)(p)(ψg)(p)=(ψf)(ψg)(p).ψ^∗ ( f g) ( p) = ( f g)(ψ( p)) = f (ψ( p))g(ψ( p)) = (ψ^∗ f )( p)(ψ^∗ g)( p) = (ψ^∗ f )(ψ^∗ g) ( p).

If M1,M2,M3M_1,M_2,M_3 are smooth manifolds and ψ1:M1M2ψ_1 : M_1 → M_2 and ψ2:M2M3ψ_2 : M_2 → M_3 are smooth maps, then

(ψ2ψ1)=ψ1ψ2.\begin{equation} (ψ_2 ◦ ψ_1 )^∗ = ψ_1^∗ ◦ ψ_2^∗ . \tag{7.5} \end{equation}

This is consequence of

(ψ2ψ1)f=f(ψ2ψ1)=(fψ2)ψ1=(ψ2f)ψ1=ψ1(ψ2f)=(ψ1ψ2)f.(ψ_2 ◦ ψ_1 )^∗ f = f ◦ (ψ_2 ◦ ψ_1 ) = ( f ◦ ψ_2 ) ◦ ψ_1 = (ψ_2^∗ f ) ◦ ψ_1 = ψ_1^∗ (ψ_2^∗ f )= (ψ_1^∗ ◦ ψ_2^∗ ) f.

Curves in a manifold

Let MM be a smooth manifold. A smooth curve γ\gamma in MM, is a smooth mapping γ:IM\gamma : I → M where IRI\subset R is an open interval.
Equivalently: γ:IM\gamma : I → M is a smooth curve in MM if II is an open interval of RR and φγ:IRnφ ◦ \gamma: I\to R^n is a smooth map for every chart (U,φ)(U, φ) of the atlas of MM.

In local coordinates   (x1,,xn) \ \ (x^1,\ldots,x^n)\ the curve is defined if we define  n \ n\ real functions

γ1(t)=x1(γ(t)),,γn(t)=xn(γ(t)),tI.\gamma^1(t)=x^1(\gamma(t)),\ldots, \gamma^n(t)=x^n(\gamma(t)),\quad t\in I.

Example 7.2

Assume, that in an open subset UR2U\subset R^2 we have a curve defined in polar coordinates:  r=1,ϕ=t, t(0,2π)\ r=1,\phi=t, \ t\in(0,2\pi).
Since in this example the transition maps are defined, the representation of the curve in Cartesian coordinates is determined by the system.

M = Manifold(2, 'R^2', r'\RR^2') # the Euclidean plane R^2 c_xy.<x,y> = M.chart() # Cartesian coordinates on R^2 U = M.open_subset('U', coord_def={c_xy: (y!=0, x<0)}) # the complement of the segment y=0 and x>0 c_cart = c_xy.restrict(U) # Cartesian coordinates on U # spherical coordinates on U: c_spher.<r,ph> = U.chart(r'r:(0,+oo) ph:(0,2*pi):\phi') # transition spher. to Cartesian ch_cart_spher=c_cart.transition_map(c_spher, [sqrt(x*x+y*y), atan2(y,x)]) # transition Cartesian to spher. ch_cart_spher.set_inverse(r*cos(ph), r*sin(ph)) R.<t> = manifolds.RealLine() # manifold R c = U.curve({c_spher: (1,t)}, (t, 0, 2*pi), name='c') # curve c print() print("Representations in polar and Cartesian coordinates:") show(c.coord_expr(c_spher)) # curve c in spherical coord. show(c.coord_expr(c_cart)) # curve c in Cartesian coord. cp=c.plot(color='black',aspect_ratio=1) # curve plot[3,3]) # show plot
Check of the inverse coordinate transformation: x == x *passed* y == y *passed* r == r *passed* ph == arctan2(r*sin(ph), r*cos(ph)) **failed** NB: a failed report can reflect a mere lack of simplification. Representations in polar and Cartesian coordinates:

(1,t)\displaystyle \left(1, t\right)

(cos(t),sin(t))\displaystyle \left(\cos\left(t\right), \sin\left(t\right)\right)

Image in a Jupyter notebook

Example 7.3

Consider the curve in R3R^3 defined in Cartesian coordinates by  x=cos3t, y=sin3t, z=2t\ x=\cos 3t,\ y=\sin 3t,\ z=2t:

J = manifolds.OpenInterval(0, 2*pi) # open interval c.<t>=J.chart() # coordinate t on c R3 = Manifold(3, 'R^3') # manifold R^3 X.<x,y,z> = R3.chart() # Cartesian coord. on R^3 # curve c in R^3: c = R3.curve({X:[cos(3*t),sin(3*t),2*t]},(t,-pi/2,+pi/2),name='c') # plot c: p = c.plot(X,color='grey',thickness=4,plot_points=200,label_axes=False)[1,1,0.3]) # show plot

Example 7.4

Define a curve on the sphere S2S^2, using spherical coordinates  θ=t, ϕ=cos2t\ \theta=t,\ \phi=\cos 2t:

%display latex S2=manifolds.Sphere(2) # sphere S^2 Phi=S2.embedding() # embedding S^2-> E^3 sph.<th,ph>=S2.spherical_coordinates() # spherical coord. on S^2 E=S2.ambient() # Euclidean space E^3 cart.<x,y,z> = E.cartesian_coordinates() # Cartesian coord. on E^3 fun=Phi.expr() # functions defining Phi R.<t> = manifolds.RealLine() # Real line as manifold c = S2.curve({sph: [t, cos(2*t)]}, (t, -oo, +oo), name='c') # curve c # plot c: p1=c.plot(chart=cart,mapping=Phi,thickness=3,color='black', plot_points=200, aspect_ratio=1,label_axes=False) p2=parametric_plot3d(fun,(th,0,pi),(ph,0,2*pi), color='lightgrey',opacity=0.7) # plot sphere (p1+p2).rotateZ(pi/2).show(frame=False,label_axes=False) # show plot

Tangent vector to a smooth curve

If γ\gamma is a smooth curve in MM and fC(M),f ∈ C^∞ (M), then γf=fγ\gamma^∗ f = f ◦ \gamma is a smooth function from an open interval IRI ⊂ R into RR. If t0It_0 ∈ I , the tangent vector to γ\gamma at the point γ(t0)\gamma(t_0 ), denoted by γt0\gamma'_{t_0} , is the map C(M)RC^\infty(M)\to R defined by ParseError: KaTeX parse error: Undefined control sequence: \label at position 134: …n C^\infty(M). \̲l̲a̲b̲e̲l̲{}\tag{7.6} \en…

Using (7.3), (7.4) we can check that γt0:C(M)R\gamma'_{t_0}:C^∞ (M)\to R has the properties γt0(af+bg)=ddt(γ(af+bg))t0=ddt(aγ(f)+bγ(g))t0=addt(γf)t0+bddt(γg)t0=aγt0(f)+bγt0(f),\gamma'_{t_0}(af+bg)=\frac{d}{dt}(\gamma^*(af+bg))\Big|_{t_0}=\frac{d}{dt}(a\gamma^*(f)+b\gamma^*(g))\Big|_{t_0}\\ =a\frac{d}{dt}(\gamma^*f)\Big|_{t_0}+ b\frac{d}{dt}(\gamma^*g)\Big|_{t_0}= a\gamma'_{t_0}(f)+b\gamma'_{t_0}(f), and γt0(fg)=ddt(γ(fg))t0=ddt(γ(f)γ(g))t0=f(γ(t0))ddt(γ(g))t0+g(γ(t0))ddt(γ(f))t0=f(γ(t0))γt0(g)+g(γ(t0))γt0(f),\gamma'_{t_0}(fg)=\frac{d}{dt}(\gamma^*(fg))\Big|_{t_0}=\frac{d}{dt}(\gamma^*(f)\gamma^*(g))\Big|_{t_0}\\ =f (\gamma(t_0 ))\frac{d}{dt}(\gamma^*(g))\Big|_{t_0} +g (\gamma(t_0 ))\frac{d}{dt}(\gamma^*(f))\Big|_{t_0}\\ =f (\gamma(t_0 ))\gamma'_{t_0}(g)+ g (\gamma(t_0 ))\gamma'_{t_0}(f),
for f,gC(M)f, g ∈ C^∞ (M) and a,bRa,b\in R.

What's next?

Take a look at the notebook Tangent spaces.