Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doc improvements for apply_diff_group #671

Conversation

olivierverdier
Copy link
Contributor

No description provided.

More details; fix some typo; use "tangent" instead of "differential".
@codecov
Copy link

codecov bot commented Oct 27, 2023

Codecov Report

Merging #671 (9a2440a) into master (4fce452) will increase coverage by 0.03%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #671      +/-   ##
==========================================
+ Coverage   99.36%   99.40%   +0.03%     
==========================================
  Files         108      108              
  Lines       10597    10597              
==========================================
+ Hits        10530    10534       +4     
+ Misses         67       63       -4     
Files Coverage Δ
src/groups/group_action.jl 94.44% <ø> (ø)

... and 2 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

Comment on lines +118 to +119
The action is of element ``a ∈ \mathcal G`` on a point ``p ∈ \mathcal M``,
and is denoted ``τ^p(a)``.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While g or now a was not listed in our notation at https://juliamanifolds.github.io/Manifolds.jl/latest/misc/notation.htmlm the group action is.
Do we have to change the notation? If so, we should do that throughout all of the package. Just fixing something a bit too locally already lead to #669, let's be more careful. Could we maybe continue to use τ_p?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The notation $τ^p$ was there before, I just reused it. Choose whatever notation is consistent throughout.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I think I have to stop here – this was not my area when it was introduced and by now I am just totally lost.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah we indeed used both, sorry, we should unify this to what is mentioned in the documentation

convention, the differential transforms vectors
The action is of element ``a ∈ \mathcal G`` on a point ``p ∈ \mathcal M``,
and is denoted ``τ^p(a)``.
The tangent map ``T τ^p`` thus transforms a vector ``X ∈ T_a \mathcal G``
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also T should be added to the notation then. But I also do not yet understand what this new notation is about “transforms” is a bit vague for me.

Also T is used in a lot of places already. Is this a usual notation? Can we maybe help the reader by providing a reference?

Copy link
Contributor Author

@olivierverdier olivierverdier Oct 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$Tf$ for the tangent map of $f$ is a very usual notation. It is also a "functor", as $Tf$ is the lift of $f\colon M \to N$ to $Tf \colon TM \to TN$. So $T$ acts both on functions ($Tf$) and manifolds ($TM$) (because it is a functor).

The differential d has another meaning and is not defined when the codomain is a general manifold, as far as I know. The codomain must be a group, and then there is a "left" and a "right" differential, unless the group is commutative.

For "transforms", I kept the original text. "map" is perhaps more adequate?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I did not think of the differential, to me that reads more like a push forward?

Concerning T itself – if that is added to the notation it is fine with me to keep that notation, sure, but we should avoid having several notations “for the same thing” – that is also why we started the notations page – to keep a bit track of that (for us even).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whether we write transforms, or maps – I still have no clue what that refers to :/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

("Jacobian" is also used a lot amongst engineers, but it usually refers to the matrix representation of the tangent map when basis are chosen, a useful distinction for users of Manifolds.jl, since apply_diff_group really computes the tangent map, not the matrix.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By the way, since we are already discussing this, do you know any good sources that discuss higher differentials/derivatives/tangent maps/push-whatevers? Some people formalize them using higher tangent bundles, while others use jet bundles which are quite hard to understand to me. So, when clearing this topic, we could do it with such concepts in mind I think.

No, not really... Both higher tangent bundles and jet bundles give me headaches. 😃

A reference on jet bundles is the impenetrable (to me) book by Peter Michor.

I think it is more helpful to start from a particular application involving higher order derivatives (perhaps related to something that can be computed with Manifolds.jl) and take it from there.

For instance, it is fairly common to need the Hessian in optimisation, but then you need some Riemannian structure, and all becomes clearer.

(Digression: why are higher tangent bundle so complicated?

If you lift a curve once, it can "fill" the first tangent bundle. That's easy. That is, a point of $TM$ can be made a tangent to a curve.

Now, if you lift a curve twice (take the second order derivative), it will not fill up the second order bundle. In other words: the second order bundle has hidden canonical structure. It just gets worse with higher order bundles, I guess.

What are the implications for computations? I don't know.)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding application, I was considering what kind of higher order differentiation would be the right formalism for second order rigid body dynamics (i.e. rigid body under constant linear and angular acceleration). So far nothing I've somewhat understood feels right, and I'm not quite happy that string theory appears on the first page of Google search for most related queries I make 😞 .

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think in mechanics, the natural space to consider is the cotangent bundle $P = T^*M$. It is naturally equipped with a symplectic form, that is, a canonical invertible linear map $T_z P \to T_z^{\ast}P$ (oops, here I am, using an iterated tangent bundle...). Intuitively, this converts a force in $T_z^{\ast} P$ to a differential equation (a vector field) on $T_zP$.

For a rigid body, the space of configuration would be $M = SE(3)$.

I'm not too sure about all the details here, but a decent reference is Introduction to Mechanics and Symmetry.

I think it would be pretty neat to work out such an example in Manifolds.jl with cotangent bundle and all, and see how it goes! I'd be happy to help in any way I can.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that was one option I was considering; what I don't like about it is that the iterated tangent bundle has too many degrees of freedom. A force in $T^{*}_zP$ is described by a point $p\in M$, a cotangent vector $\xi \in T^*_p M$, and cotangents corresponding to $p$ and $\xi$. $\xi$ and the cotangent corresponding to $p$ are not independent in our problem but this formalism separates them.

I will take a look at the book you linked, maybe there is something useful there.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Back to the notation. I think we should (a) carefully introduce non-standard notation and if so work thoroughly with references (we have DocumenterCitationsnow) – and if we introduce / adapt some notation, we should do that in all documentation, not just in a single doc string.

@olivierverdier
Copy link
Contributor Author

Closing this, as there is no consensus on the formulation, and I seriously doubt my ability to explain things clearly enough. [1], [2] (The first commit in this PR is however just a typo, so that one could be merged, I guess).

@mateuszbaran
Copy link
Member

We can definitely rethink our notation but it needs to be carefully considered, and the current one is not bad enough in my opinion that we would have to rush any improvements. We can definitely merge the first PR though.

I'm currently considering introduction of the (1,r)-velocity formalism from Kolar's book for higher order rigid body dynamics. Maybe it will provide some insights related to our considerations about differentials.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants