You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* add jacobian of the exponential function.
* Fix a merge mistake.
* Improve notation and add a note on left/right Jacobians.
* Fix a note.
* Sketch ColumAction, transfer the LeftMult action of SE(n) onto Rn.
* Finish SE(n) acting on Rn.
* add rotation around axis action
* limit imports from Manifolds
* Introduce types for row and column wise actions as generic wrappers.
* Fix docs.
* runic.
* add tests for row and columnwise actions.
* transfer the last action.
* test coverage I
* propose a different way of transferring the jacobian of the exponential.
* Fix docs.
* Bump version, set today as release day.
---------
Co-authored-by: Mateusz Baran <[email protected]>
Copy file name to clipboardExpand all lines: NEWS.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,15 +5,19 @@ All notable Changes to the Julia package `LieGroups.jl` will be documented in th
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
-
## [0.1.4]unreleased
8
+
## [0.1.4]2025-10-02
9
9
10
10
### Added
11
11
12
+
* mention `adjoint_matrix` in the transition documentation (#52)
13
+
* introduce `jacobian_exp` for the Jacobian of the exponential function.
12
14
* Introduce a `AbstractActionActsOnType` to distinguish, what previously was called “side”,
13
15
i.e. whether an action acts on the left (`ActionActsOnLeft`) or right (`ActionActsOnRight`)
14
16
* Introduce `_inv` and `_inv!` functions for the inverse operation to work the same way as `_compose` and `_compose!`, respectively.
15
17
* introduce a `LeftMultiplicationGroupAction` to represent left multiplication actions on Lie groups. While this is a bit more of a technical
16
18
name, it replaces the old `ComplexPlanarRotation`, `QuaternionRotation`, and `RotationAction`, since in the `GroupAction` this type is coupled with a group and a manifold anyway.
19
+
* further methods for the `LeftMultiplicationGroupAction` to cover the previous functionality of e.g.
20
+
*`RotationTranslationActionOnVector`
17
21
* Add the Special Galilean Group (#60)
18
22
19
23
### Fixed
@@ -23,6 +27,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
23
27
* Fixed an issue, where `exp!(G, h, g, X)` would return a wrong result if the input `g`and the output `h`are aliased (#63).
24
28
* Fixed issues with the documentation of `diff_left_compose` and `diff_right_compose` that were inconsistent
25
29
* fixed `push_forward_tangent` and `pull_back_tangent` which on general Lie groups provided a wrong default.
30
+
* fixes an allocation bug for `apply` and `diff_apply` (#52)
Copy file name to clipboardExpand all lines: docs/src/notation.md
+33-2Lines changed: 33 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,18 +8,49 @@ In this package,the notation introduced in [Manifolds.jl Notation](https://julia
8
8
|``∘``| a group operation |||
9
9
|``c_g:\mathcal G → \mathcal G``| the conjugation map (with `g`) |||
10
10
|``Df(p)[X]``| the differential of a map `f` at point `p` in direction `X`|||
11
-
|``\mathrm{d}f``| the differential of a map `f` as a function on the Lie group and the differential on the Lie algebra. |||
12
-
|``\mathrm{D}_af``| the differential of a map `f`. An index is used to indicate a certain parameter. If ``f`` is defined on or maps into the Lie group, this differential indicates the one with respect to tangent spaces |||
11
+
|``\mathrm{d}f``| the differential of a map `f` as a function on the Lie group and the differential on the Lie algebra. ||see also note below |
12
+
|``\mathrm{D}_af``| the differential of a map `f`. An index is used to indicate a certain parameter. If ``f`` is defined on or maps into the Lie group, this differential indicates the one with respect to tangent spaces ||see also note below|
13
13
|``\mathrm{e}``| identity element of a group |||
14
14
|``\exp_{\mathcal G}(X)``| The Lie group exponential function |||
15
15
|``\exp_g(X)``| The Lie group exponential map (w.r.t. a Cartan Schouten connection) |||
16
16
|``g, h, k``| elements on a (Lie) group. Sometimes called points. |``g_1, g_2, ...``||
17
17
|``\mathfrak g``| a Lie algebra |||
18
18
|``\mathcal{G}``| a Lie group |||
19
+
|``\operatorname{J}_f(p)``| the Jacobian of a map `f` at point `p`|| sometimes left Jacobian, see note below. |
19
20
|``λ_g: \mathcal G → \mathcal G``| the left group operation map ``λ_g(h) = g∘h``|||
20
21
|``\log_{\mathcal G}(g)``| The Lie group logarithmic function |||
21
22
|``\log_g(h)``| The Lie group logarithmic map (w.r.t. a Cartan Schouten connection) |||
22
23
|``α: \mathcal M → \mathcal G → \mathcal M``| a (general) group action |||
23
24
|``ρ_g: \mathcal G → \mathcal G``| the right group operation map ``ρ_g(h) = h∘g``|||
24
25
|``σ: \mathcal G × \mathcal M → \mathcal M``| a left group action ||``σ_g(p)`` to emphasize a fixed group element |
25
26
|``τ: \mathcal G × \mathcal M → \mathcal M``| a right group action |``σ_\mathrm{R}``|``τ_g(p)`` to emphasize a fixed group element |
27
+
28
+
## About differentials and Jacobians
29
+
30
+
For a function defined on a [manifold](@extref`ManifoldsBase.AbstractManifold`) ``f:\mathcal M → \mathcal N``, the differential at a point ``p ∈ \mathcal M`` is a map between the tangent spaces
31
+
32
+
```math
33
+
Df(p) : T_p\mathcal M → T_{f(p)}\mathcal N.
34
+
```
35
+
36
+
This is the default in [`Manifolds.jl`](@extref Manifolds :std:doc:`index`).
37
+
38
+
For the case where ``\mathcal M = \mathcal N = \mathcal G`` is an [`AbstractLieGroup`](@ref), the differential can be expressed in terms of the Lie algebra ``\mathfrak g`` as
39
+
40
+
```math
41
+
\mathrm{d}f(g) : \mathfrak g → \mathfrak g.
42
+
```
43
+
44
+
An alternate way to define this differential on the Lie algebra is to consider the (usual) differential ``Dg(p)`` of ``g(q) = f(q⋅p)⋅f(p)^{-1}``.
45
+
46
+
where we use a different notation on purpose. This second notation is the default throughout `LieGroups.jl`.
47
+
48
+
The Jacobian ``\operatorname{J}_f(p)`` of ``f`` at ``p`` is the matrix representation of the differential with respect to a basis of each of the tangent spaces.
49
+
For the default representation ``\mathrm{d}f(g)`` we have to choose a basis of the [Lie algebra](@ref LieAlgebra) ``\mathfrak g``.
50
+
Throughout `LieGroups.jl` this is the [`DefaultLieAlgebraOrthogonalBasis`](@ref).
51
+
52
+
## About left and right Jacobians
53
+
54
+
This jacobian using ``\mathrm{d}f(g)`` and the [`DefaultLieAlgebraOrthogonalBasis`](@ref) is sometimes called the left Jacobian.
55
+
The other choice using on two tangent space bases of ``T_p\mathcal G`` and ``T_{f(p)}\mathcal G``, respectively, is sometimes called the right Jacobian.
56
+
The default throughout `LieGroups.jl` is the left Jacobian.
|`ColumnwiseMultiplicationAction`|[`ColumnwiseGroupAction`](@ref)`(`[`LeftMultiplicationGroupAction`](@ref)`)`| within a [`GroupAction`](@ref)`(action, group, manifold)`|
26
+
|`ColumnwiseSpecialEuclideanAction`|[`ColumnwiseGroupAction`](@ref)`(`[`LeftMultiplicationGroupAction`](@ref)`)`| within a [`GroupAction`](@ref)`(action, group, manifold)`, where the `group`is a [`SpecialEuclideanGroup`](@ref)|
25
27
|`ComplexPlanarRotation`|[`LeftMultiplicationGroupAction`](@ref)| a slightly more general type for all actions that are implemented by (matrix) multiplication |
26
28
|`GroupActionSide`|[`AbstractActionActsOnType`](@ref)| Switching to a new, hopefully more descriptive naming. |
27
29
|`LeftBackwardAction`|[`AbstractRightGroupActionType`](@ref) and [`ActionActsOnRight`](@ref)| This tuple form has been discontinued. |
@@ -36,9 +38,14 @@ The list is alphabetical, but first lists types, then functions
36
38
|`RightForwardAction`|[`AbstractRightGroupActionType`](@ref) and [`ActionActsOnLeft`](@ref)| This tuple form has been discontinued. |
37
39
|`RightSide`|[`ActionActsOnRight`](@ref)||
38
40
|`RotationAction`|[`LeftMultiplicationGroupAction`](@ref)| a slightly more general type for all actions that are implemented by (matrix) multiplication |
41
+
|`RotationTranslationActionOnVector`|[`LeftMultiplicationGroupAction`](@ref)| e.g. in a [`GroupAction`](@ref) with [`SpecialEuclideanGroup`](@ref) and [`Euclidean`](@extref`Manifolds.Euclidean`)`(n)`. |
|`SemidirectProductGroup(G, H, a)`|[`LeftSemidirectProductLieGroup`](@ref)`(G, H, a)`| While this staid the same, there is now also the [`default_left_action`](@ref)`(G,H)`. When this agrees with `a` you can use the short hand `G⋉H` to generate this semidirect product. Analogously there now also exists the [`RightSemidirectProductLieGroup`](@ref)`(G,H)` with[`default_left_action`](@ref)`(G,H)` that allows for the short cut `G⋊H`|
| `adjoint_action` | [`adjoint`](@ref) | now implemented with a default, when you provide [`diff_conjugate!`](@ref).
48
+
|`adjoint_matrix(G, p, b)`|[`jacobian_conjugate`](@ref)`(G, p, e, b)`|`e` is either the [`Identity`](@ref)`(G)` or its [`identity_element`](@ref)`(G)`|
42
49
|`apply_diff`|[`diff_apply`](@ref)| modifiers (diff) come first, consistent with [`ManifoldsDiff.jl`](https://juliamanifolds.github.io/ManifoldDiff.jl/stable/)|
43
50
|`apply_diff_group`|[`diff_group_apply`](@ref)| modifiers (diff/group) come first, consistent with [`ManifoldsDiff.jl`](https://juliamanifolds.github.io/ManifoldDiff.jl/stable/)|
44
51
||[`conjugate`](@ref), [`diff_conjugate`](@ref)| a new function to model ``c_g: \mathcal G → \mathcal G`` given by ``c_g(h) = g∘h∘g^{-1}``|
@@ -53,6 +60,7 @@ The list is alphabetical, but first lists types, then functions
53
60
|`inverse_translate(G, g, h, c)`|[`inv_left_compose`](@ref)`(G, g, h)`, [`inv_right_compose`](@ref)`(G, g, h)`| compute ``g^{-1}∘h`` and ``g∘h^{-1}``, resp. |
|`jacobian_exp_argument(G, g, X, b)`|[`jacobian_exp`](@ref)`(G, g, X, b)`| the Jacobian of the exponential map w.r.t. an [`AbstractBasis`](@extref`ManifoldsBase.AbstractBasis`) of the [`LieAlgebra`](@ref). The old name is resevered for the Riemannian exponential map. |
56
64
|`log(G, g, h)`|`log(`[`base_manifold`](@ref base_manifold(G::LieGroup))`(G), g, h)`| you can now access the previous defaults on the internal manifold whenever they do not agree with the invariant one |
57
65
|`log_inv(G, g, h)`|[`log`](@ref log(G::LieGroup, g, h))`(G, g, h)`| the logarithmic map invariant to the group operation is the default on Lie groups here |
58
66
|`log_lie(G, g)`|[`log`](@ref log(G::LieGroup, g))`(G, g)`| the (matrix/Lie group) logarithm |
@@ -62,7 +70,6 @@ The list is alphabetical, but first lists types, then functions
62
70
|`translate(G, g, h)`|[`compose`](@ref)`(G, g, h)`| unified to `compose`|
63
71
|`translate_diff(G, g, X, c)`|[`diff_left_compose`](@ref)`(G, g, h, X)`, [`diff_right_compose`](@ref)`(G, g, h, X)`| for compose ``g∘h`` the functions now specify whether the derivative is taken w.r.t. to the left (`g`) or right (`h`) argument |
64
72
|`vee(G, p, X)`|[`vee`](@ref vee(G::LieAlgebra, X))`(`[`LieAlgebra`](@ref)`(G), X)`| hat/vee moved to using the new [`LieAlgebra`](@ref). The old format should still work. |
0 commit comments