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)[source]¶
- Bases: - 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 1
- triv2– trivialization 2
- transf– 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– boolean (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) - >>> from sage.all import * >>> S2 = Manifold(Integer(2), 'S^2', structure='top') >>> U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively >>> S2.declare_union(U,V) >>> c_xy = U.chart(names=('x', 'y',)); (x, y,) = c_xy._first_ngens(2)# stereographic coordinates from the North pole >>> c_uv = V.chart(names=('u', 'v',)); (u, v,) = c_uv._first_ngens(2)# stereographic coordinates from the South pole >>> xy_to_uv = c_xy.transition_map(c_uv, (x/(x**Integer(2)+y**Integer(2)), y/(x**Integer(2)+y**Integer(2))), ... intersection_name='W', restrictions1= x**Integer(2)+y**Integer(2)!=Integer(0), ... restrictions2= u**Integer(2)+v**Integer(2)!=Integer(0)) >>> W = U.intersection(V) >>> uv_to_xy = xy_to_uv.inverse() >>> E = S2.vector_bundle(Integer(2), 'E') >>> phi_U = E.trivialization('phi_U', domain=U) >>> phi_V = E.trivialization('phi_V', domain=V) >>> phi_U_to_phi_V = phi_U.transition_map(phi_V, [[Integer(0),Integer(1)],[Integer(1),Integer(0)]]) >>> phi_U_to_phi_V Transition map from Trivialization (phi_U, E|_U) to Trivialization (phi_V, E|_V) - automorphism()[source]¶
- 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) - >>> from sage.all import * >>> S2 = Manifold(Integer(2), 'S^2', structure='top') >>> U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively >>> S2.declare_union(U,V) >>> c_xy = U.chart(names=('x', 'y',)); (x, y,) = c_xy._first_ngens(2)# stereographic coordinates from the North pole >>> c_uv = V.chart(names=('u', 'v',)); (u, v,) = c_uv._first_ngens(2)# stereographic coordinates from the South pole >>> xy_to_uv = c_xy.transition_map(c_uv, (x/(x**Integer(2)+y**Integer(2)), y/(x**Integer(2)+y**Integer(2))), ... intersection_name='W', restrictions1= x**Integer(2)+y**Integer(2)!=Integer(0), ... restrictions2= u**Integer(2)+v**Integer(2)!=Integer(0)) >>> W = U.intersection(V) >>> uv_to_xy = xy_to_uv.inverse() >>> E = S2.vector_bundle(Integer(2), 'E') >>> phi_U = E.trivialization('phi_U', latex_name=r'\varphi_U', ... domain=U); phi_U Trivialization (phi_U, E|_U) >>> phi_V = E.trivialization('phi_V', latex_name=r'\varphi_V', ... domain=V); phi_V Trivialization (phi_V, E|_V) >>> phi_U_to_phi_V = phi_U.transition_map(phi_V, [[Integer(0),Integer(1)],[Integer(1),Integer(0)]]) >>> 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 >>> 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()[source]¶
- 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 → ℝ (x, y) ↦ -1 (u, v) ↦ -1 - >>> from sage.all import * >>> S2 = Manifold(Integer(2), 'S^2', structure='top') >>> U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively >>> S2.declare_union(U,V) >>> c_xy = U.chart(names=('x', 'y',)); (x, y,) = c_xy._first_ngens(2)# stereographic coordinates from the North pole >>> c_uv = V.chart(names=('u', 'v',)); (u, v,) = c_uv._first_ngens(2)# stereographic coordinates from the South pole >>> xy_to_uv = c_xy.transition_map(c_uv, (x/(x**Integer(2)+y**Integer(2)), y/(x**Integer(2)+y**Integer(2))), ... intersection_name='W', restrictions1= x**Integer(2)+y**Integer(2)!=Integer(0), ... restrictions2= u**Integer(2)+v**Integer(2)!=Integer(0)) >>> W = U.intersection(V) >>> uv_to_xy = xy_to_uv.inverse() >>> E = S2.vector_bundle(Integer(2), 'E') >>> phi_U = E.trivialization('phi_U', latex_name=r'\varphi_U', ... domain=U); phi_U Trivialization (phi_U, E|_U) >>> phi_V = E.trivialization('phi_V', latex_name=r'\varphi_V', ... domain=V); phi_V Trivialization (phi_V, E|_V) >>> phi_U_to_phi_V = phi_U.transition_map(phi_V, [[Integer(0),Integer(1)],[Integer(1),Integer(0)]]) >>> 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 >>> det.display() det(phi_U^(-1)*phi_V): W → ℝ (x, y) ↦ -1 (u, v) ↦ -1 
 - inverse()[source]¶
- 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 - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='top') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> U = M.open_subset('U'); V = M.open_subset('V') >>> XU = X.restrict(U); XV = X.restrict(U) >>> W = U.intersection(V) >>> XW = X.restrict(W) >>> E = M.vector_bundle(Integer(2), 'E') >>> phi_U = E.trivialization('phi_U', domain=U) >>> phi_V = E.trivialization('phi_V', domain=V) >>> phi_U_to_phi_V = phi_U.transition_map(phi_V, [[Integer(1),Integer(1)],[-Integer(1),Integer(1)]], ... compute_inverse=False) >>> 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) >>> phi_V_to_phi_U.automorphism() == phi_U_to_phi_V.automorphism().inverse() True 
 - matrix()[source]¶
- 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) - >>> from sage.all import * >>> S2 = Manifold(Integer(2), 'S^2', structure='top') >>> U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively >>> S2.declare_union(U,V) >>> c_xy = U.chart(names=('x', 'y',)); (x, y,) = c_xy._first_ngens(2)# stereographic coordinates from the North pole >>> c_uv = V.chart(names=('u', 'v',)); (u, v,) = c_uv._first_ngens(2)# stereographic coordinates from the South pole >>> xy_to_uv = c_xy.transition_map(c_uv, (x/(x**Integer(2)+y**Integer(2)), y/(x**Integer(2)+y**Integer(2))), ... intersection_name='W', restrictions1= x**Integer(2)+y**Integer(2)!=Integer(0), ... restrictions2= u**Integer(2)+v**Integer(2)!=Integer(0)) >>> W = U.intersection(V) >>> uv_to_xy = xy_to_uv.inverse() >>> E = S2.vector_bundle(Integer(2), 'E') >>> phi_U = E.trivialization('phi_U', latex_name=r'\varphi_U', ... domain=U); phi_U Trivialization (phi_U, E|_U) >>> 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] - >>> from sage.all import * >>> phi_U_to_phi_V = phi_U.transition_map(phi_V, [[Integer(0),Integer(1)],[Integer(1),Integer(0)]]) >>> 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 → ℝ (x, y) ↦ 0 (u, v) ↦ 0 sage: matrix[0,1].display() 1: W → ℝ (x, y) ↦ 1 (u, v) ↦ 1 sage: matrix[1,0].display() 1: W → ℝ (x, y) ↦ 1 (u, v) ↦ 1 sage: matrix[1,1].display() zero: W → ℝ (x, y) ↦ 0 (u, v) ↦ 0 - >>> from sage.all import * >>> matrix[Integer(0),Integer(0)].display() zero: W → ℝ (x, y) ↦ 0 (u, v) ↦ 0 >>> matrix[Integer(0),Integer(1)].display() 1: W → ℝ (x, y) ↦ 1 (u, v) ↦ 1 >>> matrix[Integer(1),Integer(0)].display() 1: W → ℝ (x, y) ↦ 1 (u, v) ↦ 1 >>> matrix[Integer(1),Integer(1)].display() zero: W → ℝ (x, y) ↦ 0 (u, v) ↦ 0 
 
- class sage.manifolds.trivialization.Trivialization(vector_bundle, name, domain, latex_name=None)[source]¶
- Bases: - UniqueRepresentation,- 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 - TopologicalVectorBundleor- DifferentiableVectorBundle). 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) - >>> from sage.all import * >>> S2 = Manifold(Integer(2), 'S^2', structure='top') >>> U = S2.open_subset('U') ; V = S2.open_subset('V') # complement of the North and South pole, respectively >>> S2.declare_union(U,V) >>> c_xy = U.chart(names=('x', 'y',)); (x, y,) = c_xy._first_ngens(2)# stereographic coordinates from the North pole >>> c_uv = V.chart(names=('u', 'v',)); (u, v,) = c_uv._first_ngens(2)# stereographic coordinates from the South pole >>> xy_to_uv = c_xy.transition_map(c_uv, (x/(x**Integer(2)+y**Integer(2)), y/(x**Integer(2)+y**Integer(2))), ... intersection_name='W', restrictions1= x**Integer(2)+y**Integer(2)!=Integer(0), ... restrictions2= u**Integer(2)+v**Integer(2)!=Integer(0)) >>> W = U.intersection(V) >>> uv_to_xy = xy_to_uv.inverse() >>> E = S2.vector_bundle(Integer(2), 'E') >>> phi_U = E.trivialization('phi_U', latex_name=r'\varphi_U', ... domain=U); phi_U Trivialization (phi_U, E|_U) >>> phi_V = E.trivialization('phi_V', latex_name=r'\varphi_V', ... domain=V); phi_V Trivialization (phi_V, E|_V) >>> phi_U_to_phi_V = phi_U.transition_map(phi_V, [[Integer(0),Integer(1)],[Integer(1),Integer(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 - >>> from sage.all import * >>> latex(phi_U) \varphi_U : E |_{U} \to U \times \Bold{R}^2 >>> 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)] - >>> from sage.all import * >>> 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))) - >>> from sage.all import * >>> fU = phi_U.frame(); fU Trivialization frame (E|_U, ((phi_U^*e_1),(phi_U^*e_2))) >>> 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) - >>> from sage.all import * >>> 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 >>> 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) >>> 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} - >>> from sage.all import * >>> 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 - fUwith respect to the frame- fV:- sage: fU[0].comp(fV.restrict(W))[:] [0, 1] sage: fU[1].comp(fV.restrict(W))[:] [1, 0] - >>> from sage.all import * >>> fU[Integer(0)].comp(fV.restrict(W))[:] [0, 1] >>> fU[Integer(1)].comp(fV.restrict(W))[:] [1, 0] - base_space()[source]¶
- 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 - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='top') >>> U = M.open_subset('U') >>> E = M.vector_bundle(Integer(2), 'E') >>> phi = E.trivialization('phi', domain=U) >>> phi.base_space() 2-dimensional topological manifold M 
 - coframe()[source]¶
- 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))) - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='top') >>> E = M.vector_bundle(Integer(2), 'E') >>> phi = E.trivialization('phi') >>> phi.coframe() Trivialization coframe (E|_M, ((phi^*e^1),(phi^*e^2))) 
 - domain()[source]¶
- 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 - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='top') >>> U = M.open_subset('U') >>> E = M.vector_bundle(Integer(2), 'E') >>> phi = E.trivialization('phi', domain=U) >>> phi.domain() Open subset U of the 2-dimensional topological manifold M 
 - frame()[source]¶
- 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))) - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='top') >>> E = M.vector_bundle(Integer(2), 'E') >>> phi = E.trivialization('phi') >>> phi.frame() Trivialization frame (E|_M, ((phi^*e_1),(phi^*e_2))) 
 - transition_map(other, transf, compute_inverse=True)[source]¶
- Return the transition map between - selfand- other.- INPUT: - other– the trivialization where the transition map from- selfgoes to
- transf– transformation of the transition map
- intersection_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) - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='top') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> U = M.open_subset('U'); V = M.open_subset('V') >>> XU = X.restrict(U); XV = X.restrict(U) >>> W = U.intersection(V) >>> XW = X.restrict(W) >>> E = M.vector_bundle(Integer(2), 'E') >>> phi_U = E.trivialization('phi_U', domain=U) >>> phi_V = E.trivialization('phi_V', domain=V) >>> phi_U.transition_map(phi_V, Integer(1)) Transition map from Trivialization (phi_U, E|_U) to Trivialization (phi_V, E|_V) 
 - vector_bundle()[source]¶
- 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 - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='top') >>> U = M.open_subset('U') >>> E = M.vector_bundle(Integer(2), 'E') >>> phi = E.trivialization('phi', domain=U) >>> phi.vector_bundle() Topological real vector bundle E -> M of rank 2 over the base space 2-dimensional topological manifold M