An interface for Lie algebras
LieGroups.LieAlgebra
β TypeLieAlgebra{π½, G} <: AbstractManifold{π½}
Represent the Lie algebra $\mathfrak g$, that is a $π½$ vector space with an associated lie_bracket
$[β
,β
]: \mathfrak gΓ\mathfrak g β \mathfrak g$ which fulfills
- $[X,X] = 0$ for all $X β \mathfrak g$
- The Jacobi identity $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z β \mathfrak g$.
The Lie algebras considered here are those related to a LieGroup
$\mathcal G$, namely the tangent space $T_{\mathrm{e}}\mathcal G$ at the Identity
, this is internally just a const
of the corresponding TangentSpace
.
Constructor
LieAlgebra(G::LieGroup)
Return the Lie Algebra belonging to the LieGroup
G
.
LieGroups.LieAlgebraOrthogonalBasis
β TypeLieAlgebraOrthogonalBasis{π½} <: ManifoldsBase.AbstractOrthogonalBasis{π½,ManifoldsBase.TangentSpaceType}
Specify an orthogonal basis for a Lie algebra. This is used as the default within hat
and vee
.
If not specifically overwritten/implemented for a Lie group, the DefaultOrthogonalBasis
at the identity_element
on the `base_manifold acts as a fallback.
In order to implement the corresponding get_coordinates
and get_vector
functions, define get_coordiinates_lie(::LieGroup, p, X, N)
and get_vector_lie(::LieGroup, p, X, N)
, resp.
Functions on Lie algebras
Base.rand
β Methodrand(::LieGroup; vector_at=nothing, Ο=1.0, kwargs...)
rand(::LieAlgebra; Ο=1.0, kwargs...)
rand!(::LieGroup, gX; vector_at=nothing, kwargs...)
rand!(::LieAlgebra, X; Ο=1.0, kwargs...)
Compute a random point or tangent vector on a Lie group.
For points this just means to generate a random point on the underlying manifold itself.
For tangent vectors, an element in the Lie Algebra is generated, see also rand(::LieAlgebra; kwargs...)
LieGroups.lie_bracket!
β Methodlie_bracket!(π€::LieAlgebra, X, Y)
lie_bracket!(π€::LieAlgebra, Z, X, Y)
Compute the Lie bracket $[β ,β ]: \mathfrak gΓ\mathfrak g β \mathfrak g$ which fulfills
- $[X,X] = 0$ for all $X β \mathfrak g$
- The Jacobi identity $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z β \mathfrak g$.
The computation can be done in-place of Z
.
LieGroups.lie_bracket
β Methodlie_bracket!(π€::LieAlgebra, X, Y)
lie_bracket!(π€::LieAlgebra, Z, X, Y)
Compute the Lie bracket $[β ,β ]: \mathfrak gΓ\mathfrak g β \mathfrak g$ which fulfills
- $[X,X] = 0$ for all $X β \mathfrak g$
- The Jacobi identity $[X, [Y,Z]] = [[X,Y],Z] = [Y, [X,Z]]$ holds for all $X, Y, Z β \mathfrak g$.
The computation can be done in-place of Z
.
ManifoldsBase.is_point
β Methodis_point(π€::LieAlgebra, X; kwargs...)
Check whether X
is a valid point on the Lie Algebra π€
. This falls back to checking whether X
is a valid point on the tangent space at the identity_element
(G)
on G.manifold
on the LieGroup
of G
Random.rand!
β Methodrand(::LieGroup; vector_at=nothing, Ο=1.0, kwargs...)
rand(::LieAlgebra; Ο=1.0, kwargs...)
rand!(::LieGroup, gX; vector_at=nothing, kwargs...)
rand!(::LieAlgebra, X; Ο=1.0, kwargs...)
Compute a random point or tangent vector on a Lie group.
For points this just means to generate a random point on the underlying manifold itself.
For tangent vectors, an element in the Lie Algebra is generated, see also rand(::LieAlgebra; kwargs...)
Literature
- [HN12]
- J.Β Hilgert and K.-H.Β Neeb. Structure and Geometry of Lie Groups (Springer Monographs in Mathematics, 2012).