Trivializations¶
The class Trivialization
implements trivializations on vector bundles.
The corresponding transition maps between two trivializations are represented by
TransitionMap
.
AUTHORS:
Michael Jung (2019) : initial version
-
class
sage.manifolds.trivialization.
TransitionMap
(triv1, triv2, transf, compute_inverse=True)¶ Bases:
sage.structure.sage_object.SageObject
Transition map between two trivializations.
Given a vector bundle \(\pi : E \to M\) of class \(C^k\) and rank \(n\) over the field \(K\), and two trivializations \(\varphi_U : \pi^{-1}(U) \to U \times K^n\) and \(\varphi_V : \pi^{-1}(V) \to V \times K^n\), the transition map from \(\varphi_U\) to \(\varphi_V\) is given by the composition
\[\varphi_V \circ \varphi_U^{-1} : U \cap V \times K^n \to U \cap V \times K^n .\]This composition is of the form
\[(p, v) \mapsto (p, g(p)v),\]where \(p \mapsto g(p)\) is a \(C^k\) family of invertible \(n\times n\) matrices.
INPUT:
triv1
– trivialization 1triv2
– trivialization 2transf
– the transformation between both trivializations in form of a matrix of scalar fields (ScalarField
) or coordinate functions (ChartFunction
), or a bundle automorphism (FreeModuleAutomorphism
)compute_inverse
– (default:True
) determines whether the inverse shall be computed or not
EXAMPLES:
Transition map of two trivializations on a real rank 2 vector bundle of the 2-sphere:
sage: S2 = Manifold(2, 'S^2', structure='top') sage: U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively sage: S2.declare_union(U,V) sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)), ....: intersection_name='W', restrictions1= x^2+y^2!=0, ....: restrictions2= u^2+v^2!=0) sage: W = U.intersection(V) sage: uv_to_xy = xy_to_uv.inverse() sage: E = S2.vector_bundle(2, 'E') sage: phi_U = E.trivialization('phi_U', domain=U) sage: phi_V = E.trivialization('phi_V', domain=V) sage: phi_U_to_phi_V = phi_U.transition_map(phi_V, [[0,1],[1,0]]) sage: phi_U_to_phi_V Transition map from Trivialization (phi_U, E|_U) to Trivialization (phi_V, E|_V)
-
automorphism
()¶ Return the automorphism connecting both trivializations.
The family of matrices \(p \mapsto g(p)\) given by the transition map induce a bundle automorphism
\[\varphi_U^{-1} \circ \varphi_V : \pi^{-1}(U \cap V) \to \pi^{-1}(U \cap V)\]correlating the local frames induced by the trivializations in the following way:
\[(\varphi_U^{-1} \circ \varphi_V) (\varphi_V^*e_i) = \varphi_U^*e_i .\]Then, for each point \(p \in M\), the matrix \(g(p)\) is the representation of the induced automorphism on the fiber \(E_p=\pi^{-1}(p)\) in the basis \(\left( (\varphi_V^*e_i)(p)\right)_{i=1,\dots,n}\).
EXAMPLES:
sage: S2 = Manifold(2, 'S^2', structure='top') sage: U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively sage: S2.declare_union(U,V) sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)), ....: intersection_name='W', restrictions1= x^2+y^2!=0, ....: restrictions2= u^2+v^2!=0) sage: W = U.intersection(V) sage: uv_to_xy = xy_to_uv.inverse() sage: E = S2.vector_bundle(2, 'E') sage: phi_U = E.trivialization('phi_U', latex_name=r'\varphi_U', ....: domain=U); phi_U Trivialization (phi_U, E|_U) sage: phi_V = E.trivialization('phi_V', latex_name=r'\varphi_V', ....: domain=V); phi_V Trivialization (phi_V, E|_V) sage: phi_U_to_phi_V = phi_U.transition_map(phi_V, [[0,1],[1,0]]) sage: aut = phi_U_to_phi_V.automorphism(); aut Automorphism phi_U^(-1)*phi_V of the Free module C^0(W;E) of sections on the Open subset W of the 2-dimensional topological manifold S^2 with values in the real vector bundle E of rank 2 sage: aut.display(phi_U.frame().restrict(W)) phi_U^(-1)*phi_V = (phi_U^*e_1)*(phi_U^*e^2) + (phi_U^*e_2)*(phi_U^*e^1)
-
det
()¶ Return the determinant of
self
.OUTPUT:
An instance of
ScalarField
.
EXAMPLES:
sage: S2 = Manifold(2, 'S^2', structure='top') sage: U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively sage: S2.declare_union(U,V) sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)), ....: intersection_name='W', restrictions1= x^2+y^2!=0, ....: restrictions2= u^2+v^2!=0) sage: W = U.intersection(V) sage: uv_to_xy = xy_to_uv.inverse() sage: E = S2.vector_bundle(2, 'E') sage: phi_U = E.trivialization('phi_U', latex_name=r'\varphi_U', ....: domain=U); phi_U Trivialization (phi_U, E|_U) sage: phi_V = E.trivialization('phi_V', latex_name=r'\varphi_V', ....: domain=V); phi_V Trivialization (phi_V, E|_V) sage: phi_U_to_phi_V = phi_U.transition_map(phi_V, [[0,1],[1,0]]) sage: det = phi_U_to_phi_V.det(); det Scalar field det(phi_U^(-1)*phi_V) on the Open subset W of the 2-dimensional topological manifold S^2 sage: det.display() det(phi_U^(-1)*phi_V): W --> R (x, y) |--> -1 (u, v) |--> -1
-
inverse
()¶ Return the inverse transition map.
EXAMPLES:
sage: M = Manifold(2, 'M', structure='top') sage: X.<x,y> = M.chart() sage: U = M.open_subset('U'); V = M.open_subset('V') sage: XU = X.restrict(U); XV = X.restrict(U) sage: W = U.intersection(V) sage: XW = X.restrict(W) sage: E = M.vector_bundle(2, 'E') sage: phi_U = E.trivialization('phi_U', domain=U) sage: phi_V = E.trivialization('phi_V', domain=V) sage: phi_U_to_phi_V = phi_U.transition_map(phi_V, [[1,1],[-1,1]], ....: compute_inverse=False) sage: phi_V_to_phi_U = phi_U_to_phi_V.inverse(); phi_V_to_phi_U Transition map from Trivialization (phi_V, E|_V) to Trivialization (phi_U, E|_U) sage: phi_V_to_phi_U.automorphism() == phi_U_to_phi_V.automorphism().inverse() True
-
matrix
()¶ Return the matrix representation the transition map.
EXAMPLES:
Local trivializations on a real rank 2 vector bundle over the 2-sphere:
sage: S2 = Manifold(2, 'S^2', structure='top') sage: U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively sage: S2.declare_union(U,V) sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)), ....: intersection_name='W', restrictions1= x^2+y^2!=0, ....: restrictions2= u^2+v^2!=0) sage: W = U.intersection(V) sage: uv_to_xy = xy_to_uv.inverse() sage: E = S2.vector_bundle(2, 'E') sage: phi_U = E.trivialization('phi_U', latex_name=r'\varphi_U', ....: domain=U); phi_U Trivialization (phi_U, E|_U) sage: phi_V = E.trivialization('phi_V', latex_name=r'\varphi_V', ....: domain=V); phi_V Trivialization (phi_V, E|_V)
The input is coerced into a bundle automorphism. From there, the matrix can be recovered:
sage: phi_U_to_phi_V = phi_U.transition_map(phi_V, [[0,1],[1,0]]) sage: matrix = phi_U_to_phi_V.matrix(); matrix [Scalar field zero on the Open subset W of the 2-dimensional topological manifold S^2 Scalar field 1 on the Open subset W of the 2-dimensional topological manifold S^2] [ Scalar field 1 on the Open subset W of the 2-dimensional topological manifold S^2 Scalar field zero on the Open subset W of the 2-dimensional topological manifold S^2]
Let us check the matrix components:
sage: matrix[0,0].display() zero: W --> R (x, y) |--> 0 (u, v) |--> 0 sage: matrix[0,1].display() 1: W --> R (x, y) |--> 1 (u, v) |--> 1 sage: matrix[1,0].display() 1: W --> R (x, y) |--> 1 (u, v) |--> 1 sage: matrix[1,1].display() zero: W --> R (x, y) |--> 0 (u, v) |--> 0
-
class
sage.manifolds.trivialization.
Trivialization
(vector_bundle, name, domain, latex_name=None)¶ Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.structure.sage_object.SageObject
A local trivialization of a given vector bundle.
Let \(\pi:E \to M\) be a vector bundle of rank \(n\) and class \(C^k\) over the field \(K\) (see
TopologicalVectorBundle
orDifferentiableVectorBundle
). A local trivialization over an open subset \(U \subset M\) is a \(C^k\)-diffeomorphism \(\varphi: \pi^{-1}(U) \to U \times K^n\) such that \(\pi \circ \varphi^{-1}=\mathrm{pr}_1\) and \(v \mapsto \varphi^{-1}(q,v)\) is a linear isomorphism for any \(q \in U\).Note
Notice that frames and trivializations are equivalent concepts (for further details see
LocalFrame
). However, in order to facilitate applications and being consistent with the implementations of charts, trivializations are introduced separately.EXAMPLES:
Local trivializations on a real rank 2 vector bundle over the 2-sphere:
sage: S2 = Manifold(2, 'S^2', structure='top') sage: U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively sage: S2.declare_union(U,V) sage: c_xy.<x,y> = U.chart() # stereographic coordinates from the North pole sage: c_uv.<u,v> = V.chart() # stereographic coordinates from the South pole sage: xy_to_uv = c_xy.transition_map(c_uv, (x/(x^2+y^2), y/(x^2+y^2)), ....: intersection_name='W', restrictions1= x^2+y^2!=0, ....: restrictions2= u^2+v^2!=0) sage: W = U.intersection(V) sage: uv_to_xy = xy_to_uv.inverse() sage: E = S2.vector_bundle(2, 'E') sage: phi_U = E.trivialization('phi_U', latex_name=r'\varphi_U', ....: domain=U); phi_U Trivialization (phi_U, E|_U) sage: phi_V = E.trivialization('phi_V', latex_name=r'\varphi_V', ....: domain=V); phi_V Trivialization (phi_V, E|_V) sage: phi_U_to_phi_V = phi_U.transition_map(phi_V, [[0,1],[1,0]]); phi_U_to_phi_V Transition map from Trivialization (phi_U, E|_U) to Trivialization (phi_V, E|_V)
The LaTeX output gives the following:
sage: latex(phi_U) \varphi_U : E |_{U} \to U \times \Bold{R}^2 sage: latex(phi_V) \varphi_V : E |_{V} \to V \times \Bold{R}^2
The trivializations are part of the vector bundle atlas:
sage: E.atlas() [Trivialization (phi_U, E|_U), Trivialization (phi_V, E|_V)]
Each trivialization induces a local trivialization frame:
sage: fU = phi_U.frame(); fU Trivialization frame (E|_U, ((phi_U^*e_1),(phi_U^*e_2))) sage: fV = phi_V.frame(); fV Trivialization frame (E|_V, ((phi_V^*e_1),(phi_V^*e_2)))
and the transition map connects these two frames via a bundle automorphism:
sage: aut = phi_U_to_phi_V.automorphism(); aut Automorphism phi_U^(-1)*phi_V of the Free module C^0(W;E) of sections on the Open subset W of the 2-dimensional topological manifold S^2 with values in the real vector bundle E of rank 2 sage: aut.display(fU.restrict(W)) phi_U^(-1)*phi_V = (phi_U^*e_1)*(phi_U^*e^2) + (phi_U^*e_2)*(phi_U^*e^1) sage: aut.display(fV.restrict(W)) phi_U^(-1)*phi_V = (phi_V^*e_1)*(phi_V^*e^2) + (phi_V^*e_2)*(phi_V^*e^1)
The automorphisms are listed in the frame changes of the vector bundle:
sage: E.changes_of_frame() # random {(Local frame (E|_W, ((phi_U^*e_1),(phi_U^*e_2))), Local frame (E|_W, ((phi_V^*e_1),(phi_V^*e_2)))): Automorphism phi_U^(-1)*phi_V^(-1) of the Free module C^0(W;E) of sections on the Open subset W of the 2-dimensional topological manifold S^2 with values in the real vector bundle E of rank 2, (Local frame (E|_W, ((phi_V^*e_1),(phi_V^*e_2))), Local frame (E|_W, ((phi_U^*e_1),(phi_U^*e_2)))): Automorphism phi_U^(-1)*phi_V of the Free module C^0(W;E) of sections on the Open subset W of the 2-dimensional topological manifold S^2 with values in the real vector bundle E of rank 2}
Let us check the components of
fU
with respect to the framefV
:sage: fU[0].comp(fV.restrict(W))[:] [0, 1] sage: fU[1].comp(fV.restrict(W))[:] [1, 0]
-
base_space
()¶ Return the manifold on which the trivialization is defined.
EXAMPLES:
sage: M = Manifold(2, 'M', structure='top') sage: U = M.open_subset('U') sage: E = M.vector_bundle(2, 'E') sage: phi = E.trivialization('phi', domain=U) sage: phi.base_space() 2-dimensional topological manifold M
-
coframe
()¶ Return the standard coframe induced by
self
.See also
EXAMPLES:
sage: M = Manifold(2, 'M', structure='top') sage: E = M.vector_bundle(2, 'E') sage: phi = E.trivialization('phi') sage: phi.coframe() Trivialization coframe (E|_M, ((phi^*e^1),(phi^*e^2)))
-
domain
()¶ Return the domain on which the trivialization is defined.
EXAMPLES:
sage: M = Manifold(2, 'M', structure='top') sage: U = M.open_subset('U') sage: E = M.vector_bundle(2, 'E') sage: phi = E.trivialization('phi', domain=U) sage: phi.domain() Open subset U of the 2-dimensional topological manifold M
-
frame
()¶ Return the standard frame induced by
self
. If \(\psi\) is a trivialization then the corresponding frame can be obtained by the maps \(p \mapsto \psi^{-1}(p,e_i)\), where \((e_1, \ldots, e_n)\) is the standard basis of \(K^n\). We briefly denote \((\psi^*e_i)\) instead of \(\psi^{-1}(\cdot,e_i)\).See also
EXAMPLES:
sage: M = Manifold(2, 'M', structure='top') sage: E = M.vector_bundle(2, 'E') sage: phi = E.trivialization('phi') sage: phi.frame() Trivialization frame (E|_M, ((phi^*e_1),(phi^*e_2)))
-
transition_map
(other, transf, compute_inverse=True)¶ Return the transition map between
self
andother
.INPUT:
other
– the trivialization where the transition map fromself
goes totransf
– transformation of the transition mapintersection_name
– (default:None
) name to be given to the subset \(U \cap V\) if the latter differs from \(U\) or \(V\)
EXAMPLES:
sage: M = Manifold(2, 'M', structure='top') sage: X.<x,y> = M.chart() sage: U = M.open_subset('U'); V = M.open_subset('V') sage: XU = X.restrict(U); XV = X.restrict(U) sage: W = U.intersection(V) sage: XW = X.restrict(W) sage: E = M.vector_bundle(2, 'E') sage: phi_U = E.trivialization('phi_U', domain=U) sage: phi_V = E.trivialization('phi_V', domain=V) sage: phi_U.transition_map(phi_V, 1) Transition map from Trivialization (phi_U, E|_U) to Trivialization (phi_V, E|_V)
-
vector_bundle
()¶ Return the vector bundle on which the trivialization is defined.
EXAMPLES:
sage: M = Manifold(2, 'M', structure='top') sage: U = M.open_subset('U') sage: E = M.vector_bundle(2, 'E') sage: phi = E.trivialization('phi', domain=U) sage: phi.vector_bundle() Topological real vector bundle E -> M of rank 2 over the base space 2-dimensional topological manifold M
-