Poisson tensors#
AUTHORS:
Tobias Diez (2021): initial version
- class sage.manifolds.differentiable.poisson_tensor.PoissonTensorField(manifold: DifferentiableManifold | VectorFieldModule, name: str | None = 'varpi', latex_name: str | None = '\\varpi')[source]#
Bases:
MultivectorField
A Poisson bivector field \(\varpi\) on a differentiable manifold.
That is, at each point \(m \in M\), \(\varpi_m\) is a bilinear map of the type:
\[\varpi_m:\ T^*_m M \times T^*_m M \to \RR\]where \(T^*_m M\) stands for the cotangent space to the manifold \(M\) at the point \(m\), such that \(\varpi_m\) is skew-symmetric and the Schouten-Nijenhuis bracket (cf.
bracket()
) of \(\varpi\) with itself vanishes.INPUT:
manifold
– module \(\mathfrak{X}(M)\) of vector fields on the manifold \(M\), or the manifold \(M\) itselfname
– (default:varpi
) name given to the Poisson tensorlatex_name
– (default:\\varpi
) LaTeX symbol to denote the Poisson tensor; ifNone
, it is formed fromname
EXAMPLES:
A Poisson tensor on the 2-sphere:
sage: M.<x,y> = manifolds.Sphere(2, coordinates='stereographic') sage: stereoN = M.stereographic_coordinates(pole='north') sage: stereoS = M.stereographic_coordinates(pole='south') sage: varpi = M.poisson_tensor(name='varpi', latex_name=r'\varpi') sage: varpi 2-vector field varpi on the 2-sphere S^2 of radius 1 smoothly embedded in the Euclidean space E^3
>>> from sage.all import * >>> M = manifolds.Sphere(Integer(2), coordinates='stereographic', names=('x', 'y',)); (x, y,) = M._first_ngens(2) >>> stereoN = M.stereographic_coordinates(pole='north') >>> stereoS = M.stereographic_coordinates(pole='south') >>> varpi = M.poisson_tensor(name='varpi', latex_name=r'\varpi') >>> varpi 2-vector field varpi on the 2-sphere S^2 of radius 1 smoothly embedded in the Euclidean space E^3
varpi
is initialized by providing its single nonvanishing component w.r.t. the vector frame associated tostereoN
, which is the default frame onM
:sage: varpi[1, 2] = 1
>>> from sage.all import * >>> varpi[Integer(1), Integer(2)] = Integer(1)
The components w.r.t. the vector frame associated to
stereoS
are obtained thanks to the methodadd_comp_by_continuation()
:sage: varpi.add_comp_by_continuation(stereoS.frame(), ....: stereoS.domain().intersection(stereoN.domain())) sage: varpi.display() varpi = ∂/∂x∧∂/∂y sage: varpi.display(stereoS) varpi = (-xp^4 - 2*xp^2*yp^2 - yp^4) ∂/∂xp∧∂/∂yp
>>> from sage.all import * >>> varpi.add_comp_by_continuation(stereoS.frame(), ... stereoS.domain().intersection(stereoN.domain())) >>> varpi.display() varpi = ∂/∂x∧∂/∂y >>> varpi.display(stereoS) varpi = (-xp^4 - 2*xp^2*yp^2 - yp^4) ∂/∂xp∧∂/∂yp
The Schouten-Nijenhuis bracket of a Poisson tensor with itself vanishes (this is trivial here, since
M
is 2-dimensional):sage: varpi.bracket(varpi).display() [varpi,varpi] = 0
>>> from sage.all import * >>> varpi.bracket(varpi).display() [varpi,varpi] = 0
- hamiltonian_vector_field(function)[source]#
Return the Hamiltonian vector field \(X_f\) generated by the given function \(f: M \to \RR\).
The Hamiltonian vector field is defined by
\[X_f = - \varpi^\sharp (d f),\]where \(\varpi^\sharp: T^* M \to TM\) is given by \(\beta(\varpi^\sharp(\alpha)) = \varpi(\alpha, \beta)\).
INPUT:
function
– the function generating the Hamiltonian vector field
EXAMPLES:
sage: M.<q, p> = EuclideanSpace(2) sage: poisson = M.poisson_tensor('varpi') sage: poisson.set_comp()[1,2] = -1 sage: f = M.scalar_field(function('f')(q, p), name='f') sage: Xf = poisson.hamiltonian_vector_field(f) sage: Xf.display() Xf = d(f)/dp e_q - d(f)/dq e_p
>>> from sage.all import * >>> M = EuclideanSpace(Integer(2), names=('q', 'p',)); (q, p,) = M._first_ngens(2) >>> poisson = M.poisson_tensor('varpi') >>> poisson.set_comp()[Integer(1),Integer(2)] = -Integer(1) >>> f = M.scalar_field(function('f')(q, p), name='f') >>> Xf = poisson.hamiltonian_vector_field(f) >>> Xf.display() Xf = d(f)/dp e_q - d(f)/dq e_p
- poisson_bracket(f, g)[source]#
Return the Poisson bracket
\[\{f, g\} = \varpi(df, dg)\]of the given functions.
INPUT:
f
– first functiong
– second function
EXAMPLES:
sage: M.<q, p> = EuclideanSpace(2) sage: poisson = M.poisson_tensor('varpi') sage: poisson.set_comp()[1,2] = -1 sage: f = M.scalar_field(function('f')(q, p), name='f') sage: g = M.scalar_field(function('g')(q, p), name='g') sage: poisson.poisson_bracket(f, g).display() poisson(f, g): E^2 → ℝ (q, p) ↦ d(f)/dp*d(g)/dq - d(f)/dq*d(g)/dp
>>> from sage.all import * >>> M = EuclideanSpace(Integer(2), names=('q', 'p',)); (q, p,) = M._first_ngens(2) >>> poisson = M.poisson_tensor('varpi') >>> poisson.set_comp()[Integer(1),Integer(2)] = -Integer(1) >>> f = M.scalar_field(function('f')(q, p), name='f') >>> g = M.scalar_field(function('g')(q, p), name='g') >>> poisson.poisson_bracket(f, g).display() poisson(f, g): E^2 → ℝ (q, p) ↦ d(f)/dp*d(g)/dq - d(f)/dq*d(g)/dp
- sharp(form)[source]#
Return the image of the given differential form under the map \(\varpi^\sharp: T^* M \to TM\) defined by
\[\beta(\varpi^\sharp(\alpha)) = \varpi(\alpha, \beta).\]for all \(\alpha, \beta \in T^*_m M\).
In indices, \(\alpha^i = \varpi^{ij} \alpha_j\).
INPUT:
form
– the differential form to calculate its sharp of
EXAMPLES:
sage: M.<q, p> = EuclideanSpace(2) sage: poisson = M.poisson_tensor('varpi') sage: poisson.set_comp()[1,2] = -1 sage: a = M.one_form(1, 0, name='a') sage: poisson.sharp(a).display() a_sharp = e_p
>>> from sage.all import * >>> M = EuclideanSpace(Integer(2), names=('q', 'p',)); (q, p,) = M._first_ngens(2) >>> poisson = M.poisson_tensor('varpi') >>> poisson.set_comp()[Integer(1),Integer(2)] = -Integer(1) >>> a = M.one_form(Integer(1), Integer(0), name='a') >>> poisson.sharp(a).display() a_sharp = e_p
- class sage.manifolds.differentiable.poisson_tensor.PoissonTensorFieldParal(manifold: DifferentiableManifold | VectorFieldModule, name: str | None = None, latex_name: str | None = None)[source]#
Bases:
PoissonTensorField
,MultivectorFieldParal
A Poisson bivector field \(\varpi\) on a parallelizable manifold.
INPUT:
manifold
– module \(\mathfrak{X}(M)\) of vector fields on the manifold \(M\), or the manifold \(M\) itselfname
– (default:varpi
) name given to the Poisson tensorlatex_name
– (default:\\varpi
) LaTeX symbol to denote the Poisson tensor; ifNone
, it is formed fromname
EXAMPLES:
Standard Poisson tensor on \(\RR^2\):
sage: M.<q, p> = EuclideanSpace(2) sage: varpi = M.poisson_tensor(name='varpi', latex_name=r'\varpi') sage: varpi[1,2] = -1 sage: varpi 2-vector field varpi on the Euclidean plane E^2 sage: varpi.display() varpi = -e_q∧e_p
>>> from sage.all import * >>> M = EuclideanSpace(Integer(2), names=('q', 'p',)); (q, p,) = M._first_ngens(2) >>> varpi = M.poisson_tensor(name='varpi', latex_name=r'\varpi') >>> varpi[Integer(1),Integer(2)] = -Integer(1) >>> varpi 2-vector field varpi on the Euclidean plane E^2 >>> varpi.display() varpi = -e_q∧e_p