Tangent Spaces¶
The class TangentSpace implements tangent vector spaces to a
differentiable manifold.
AUTHORS:
Eric Gourgoulhon, Michal Bejger (2014-2015): initial version
Travis Scrimshaw (2016): review tweaks
REFERENCES:
Chap. 3 of [Lee2013]
- class sage.manifolds.differentiable.tangent_space.TangentSpace(point)¶
Bases:
sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModuleTangent space to a differentiable manifold at a given point.
Let \(M\) be a differentiable manifold of dimension \(n\) over a topological field \(K\) and \(p \in M\). The tangent space \(T_p M\) is an \(n\)-dimensional vector space over \(K\) (without a distinguished basis).
INPUT:
point–ManifoldPoint; point \(p\) at which the tangent space is defined
EXAMPLES:
Tangent space on a 2-dimensional manifold:
sage: M = Manifold(2, 'M') sage: c_xy.<x,y> = M.chart() sage: p = M.point((-1,2), name='p') sage: Tp = M.tangent_space(p) ; Tp Tangent space at Point p on the 2-dimensional differentiable manifold M
Tangent spaces are free modules of finite rank over
SymbolicRing(actually vector spaces of finite dimension over the manifold base field \(K\), with \(K=\RR\) here):sage: Tp.base_ring() Symbolic Ring sage: Tp.category() Category of finite dimensional vector spaces over Symbolic Ring sage: Tp.rank() 2 sage: dim(Tp) 2
The tangent space is automatically endowed with bases deduced from the vector frames around the point:
sage: Tp.bases() [Basis (∂/∂x,∂/∂y) on the Tangent space at Point p on the 2-dimensional differentiable manifold M] sage: M.frames() [Coordinate frame (M, (∂/∂x,∂/∂y))]
At this stage, only one basis has been defined in the tangent space, but new bases can be added from vector frames on the manifold by means of the method
at(), for instance, from the frame associated with some new coordinates:sage: c_uv.<u,v> = M.chart() sage: c_uv.frame().at(p) Basis (∂/∂u,∂/∂v) on the Tangent space at Point p on the 2-dimensional differentiable manifold M sage: Tp.bases() [Basis (∂/∂x,∂/∂y) on the Tangent space at Point p on the 2-dimensional differentiable manifold M, Basis (∂/∂u,∂/∂v) on the Tangent space at Point p on the 2-dimensional differentiable manifold M]
All the bases defined on
Tpare on the same footing. Accordingly the tangent space is not in the category of modules with a distinguished basis:sage: Tp in ModulesWithBasis(SR) False
It is simply in the category of modules:
sage: Tp in Modules(SR) True
Since the base ring is a field, it is actually in the category of vector spaces:
sage: Tp in VectorSpaces(SR) True
A typical element:
sage: v = Tp.an_element() ; v Tangent vector at Point p on the 2-dimensional differentiable manifold M sage: v.display() ∂/∂x + 2 ∂/∂y sage: v.parent() Tangent space at Point p on the 2-dimensional differentiable manifold M
The zero vector:
sage: Tp.zero() Tangent vector zero at Point p on the 2-dimensional differentiable manifold M sage: Tp.zero().display() zero = 0 sage: Tp.zero().parent() Tangent space at Point p on the 2-dimensional differentiable manifold M
Tangent spaces are unique:
sage: M.tangent_space(p) is Tp True sage: p1 = M.point((-1,2)) sage: M.tangent_space(p1) is Tp True
even if points are not:
sage: p1 is p False
Actually
p1andpshare the same tangent space because they compare equal:sage: p1 == p True
The tangent-space uniqueness holds even if the points are created in different coordinate systems:
sage: xy_to_uv = c_xy.transition_map(c_uv, (x+y, x-y)) sage: uv_to_xv = xy_to_uv.inverse() sage: p2 = M.point((1, -3), chart=c_uv, name='p_2') sage: p2 is p False sage: M.tangent_space(p2) is Tp True sage: p2 == p True
See also
FiniteRankFreeModulefor more documentation.- Element¶
alias of
sage.manifolds.differentiable.tangent_vector.TangentVector
- base_point()¶
Return the manifold point at which
selfis defined.EXAMPLES:
sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: p = M.point((1,-2), name='p') sage: Tp = M.tangent_space(p) sage: Tp.base_point() Point p on the 2-dimensional differentiable manifold M sage: Tp.base_point() is p True
- dim()¶
Return the vector space dimension of
self.EXAMPLES:
sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: p = M.point((1,-2), name='p') sage: Tp = M.tangent_space(p) sage: Tp.dimension() 2
A shortcut is
dim():sage: Tp.dim() 2
One can also use the global function
dim:sage: dim(Tp) 2
- dimension()¶
Return the vector space dimension of
self.EXAMPLES:
sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: p = M.point((1,-2), name='p') sage: Tp = M.tangent_space(p) sage: Tp.dimension() 2
A shortcut is
dim():sage: Tp.dim() 2
One can also use the global function
dim:sage: dim(Tp) 2