Package geometry :: Package manifolds :: Module matrix_lie_group :: Class MatrixLieGroup
[hide private]
[frames] | no frames]

Class MatrixLieGroup

source code


This is the base class for matrix Lie groups.

Subclasses should provide a MatrixLieAlgebra object. Given the Lie algebra, we can compute everything. However, subclasses can choose to overload some functions if they know a more numerically stable implementation.

Nested Classes [hide private]

Inherited from group.Group: __metaclass__

Inherited from differentiable_manifold.DifferentiableManifold: Embedding, Isomorphism

Instance Methods [hide private]
 
__init__(self, n, dimension, algebra)
Initializes the Lie group.
source code
 
algebra_from_group(self, g)
Converts an element of the group to the algebra.
source code
 
belongs_algebra(self, x) source code
 
distance(self, a, b)
Computes the distance between two points.
source code
 
expmap(self, bv)
This is the inverse of :py:func:`logmap_`.
source code
 
get_algebra(self)
Returns the interface to the corresponding Lie algebra.
source code
 
group_from_algebra(self, a)
Converts an element of the algebra to the group.
source code
 
inverse(self, g)
:param g: :type g: ``belongs``
source code
 
logmap(self, base, target)
Returns the direction from base to target.
source code
 
multiply(self, g, h)
:param h: :type h: ``belongs``
source code
 
project_ts(self, bv)
Projects the vector *x* to the tangent space at point *base*.
source code
 
tangent_bundle(self)
Returns the manifold corresponding to the tangent bundle.
source code
 
unity(self)
Returns the group unity.
source code
 
velocity_from_points(self, a, b, delta=1)
Find the velocity in local frame to go from *a* to *b* in *delta* time.
source code

Inherited from group.Group: identity

Inherited from differentiable_manifold.DifferentiableManifold: assert_close, belongs, belongs_ts, can_convert_to, can_represent, convert_to, embed_in, embeddable_in, friendly, from_yaml, geodesic, get_dimension, interesting_points, project_from, project_to, relations_descriptions, to_yaml

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Static Methods [hide private]

Inherited from differentiable_manifold.DifferentiableManifold: embedding, isomorphism

Class Variables [hide private]
  __abstractmethods__ = frozenset(['belongs'])
  _abc_cache = <_weakrefset.WeakSet object at 0x23ad910>
Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, n, dimension, algebra)
(Constructor)

source code 

Initializes the Lie group.

:param n: dimension of the matrix group. :param algebra: instance of :py:class:MatrixLieAlgebra

Overrides: object.__init__

algebra_from_group(self, g)

source code 

           Converts an element of the group to the algebra. 
           Uses generic matrix logarithm plus projection.
       


:param g: 
:type g:  ``belongs``

:rtype:  ``belongs_algebra``

distance(self, a, b)

source code 

           Computes the distance between two points.
       
           In the case of Lie groups, this is done by 
           translating everything to the origin, computing the
           logmap, and using the norm defined in the Lie Algebra object.

       


:param a: 
:type a:  ``belongs``

:param b: 
:type b:  ``belongs``

Overrides: differentiable_manifold.DifferentiableManifold.distance

expmap(self, bv)

source code 

           This is the inverse of :py:func:`logmap_`. 
       
           In the case of Lie groups, this is implemented using
           the usual matrix exponential.

           Here the :py:func:`MatrixLieAlgebra.project` function
           is used to mitigate numerical errors. 
       


:param bv: 
:type bv:  ``belongs_ts``

:rtype:  ``belongs``

Overrides: differentiable_manifold.DifferentiableManifold.expmap

group_from_algebra(self, a)

source code 

           Converts an element of the algebra to the group. 
       
           Uses generic matrix exponential.
       


:param a: 
:type a:  ``belongs_algebra``

:rtype:  ``belongs``

inverse(self, g)

source code 

:param g: :type g: ``belongs``

:rtype: ``belongs``

Overrides: group.Group.inverse

logmap(self, base, target)

source code 

           Returns the direction from base to target. 
       
           In the case of Lie groups, this is implemented
           by using the usual matrix logarithm at the origin.
           
           Here the :py:func:`MatrixLieAlgebra.project` function
           is used to mitigate numerical errors. 
       


:param base: 
:type base:  ``belongs``

:param target: 
:type target:  ``belongs``

:rtype:  ``belongs_ts``

Overrides: differentiable_manifold.DifferentiableManifold.logmap

multiply(self, g, h)

source code 

:param h: :type h: ``belongs``

:param g: :type g: ``belongs``

Overrides: group.Group.multiply

project_ts(self, bv)

source code 

           Projects the vector *x* to the tangent space at point *base*.
       
           In the case of Lie Groups, we do this by translating the
           vector to the origin, projecting it to the Lie Algebra,
           and then translating it back. 
       


:param bv: 
:type bv:  ``tuple(belongs,*)``

Overrides: differentiable_manifold.DifferentiableManifold.project_ts

tangent_bundle(self)

source code 

Returns the manifold corresponding to the tangent bundle. The default gives a generic implementation. MatrixLieGroup have a different one.

Overrides: differentiable_manifold.DifferentiableManifold.tangent_bundle
(inherited documentation)

unity(self)

source code 

Returns the group unity.

Overrides: group.Group.unity
(inherited documentation)

velocity_from_points(self, a, b, delta=1)

source code 

           Find the velocity in local frame to go from *a* to *b* in 
           *delta* time. 
       


:param a: 
:type a:  ``belongs``

:param b: 
:type b:  ``belongs``

:rtype:  ``belongs_ts``