Replies: 14 comments
-
I am not 100% sure what you mean by “more streamlined” here? I was hoping that defining a struct (for the manifold) and implementing the functions you need is already a bit streamlined? Maybe we can improve that tutorial. For the I do – sadly – not understand what you mean by “the linear transformation of the manifold with a nonzero-determinant” – so you mean GL(n) the manifold of n-by.n manifolds with nonzero determinant? That one we indeed to not have – but then still a bit more information of a linear transform of a manifold would be interesting. |
Beta Was this translation helpful? Give feedback.
-
Yes, I mean GL(n). It seems, maybe I am wrong, that if I have an implemented manifold X and I want to obtain a manifold |
Beta Was this translation helpful? Give feedback.
-
Hm, Even if it does make sense, the resulting set Do these ideas help? |
Beta Was this translation helpful? Give feedback.
-
Hello! There is currently no such functionality. Do you mean to use the pushforward metric on the transformed manifold or the one derived from the embedding after transformation? The first option is relatively simple and I thought about doing it even for nonlinear transformations. The second one is very hard because only a few operations can be generically implemented.
I thought being a manifold is invariant to diffeomorphic transformations of the embedding, like the action of GL(n)? Do you have a counterexample? EDIT: |
Beta Was this translation helpful? Give feedback.
-
Well, the first thing is, you need an embedding, then I am not 100% sure, since I do see that one could push forward the metric for sure, so yeah you might be right that the proper embedding might be enough, since GL(n) is a “nice enough transformation”. |
Beta Was this translation helpful? Give feedback.
-
Yes, I am interested in the manifold with the pushforward metric. |
Beta Was this translation helpful? Give feedback.
-
So just to maybe summarise the idea, one could do (just typed not ran or checked)
and then defined something like This would still mean you have to follow the roadmap from above, but at least only once for all your transformations ;) |
Beta Was this translation helpful? Give feedback.
-
I mean if the embedding does not work as you expect and the matrix A maybe does not fit, then this all breaks, but “if all goes well” this would be what you want, right? |
Beta Was this translation helpful? Give feedback.
-
Yes, indeed. |
Beta Was this translation helpful? Give feedback.
-
Then, if that is ok with you, maybe try to follow the start I wrote and try to work that out yourself? We are surely here to help if you get stuck :) Maybe the main thing to remember it to do the |
Beta Was this translation helpful? Give feedback.
-
By the way, the tutorial on how to implement a manifold moved to ManifoldsBase.jl quite a while back https://juliamanifolds.github.io/ManifoldsBase.jl/stable/tutorials/implement-a-manifold/ (just because I was confused you linked to a very old version of the docs in the opening post) |
Beta Was this translation helpful? Give feedback.
-
For reference, you can also take a look at implementation of |
Beta Was this translation helpful? Give feedback.
-
On my way to work today I thought about this a bit. I think a disadvantage here might be both numerical stability and computational effort. Before each and every operation you would either multiply with A or its inverse. Sure we could store that in the struct as well to just have a matrix multiplication. Then, still, if your computational effort is, say, Would it not be easier to take your data in the beginning – let's call that |
Beta Was this translation helpful? Give feedback.
-
I moved this over to a discussion, since this does not seem to be an issue/bug we should fix. If there is a good reason to provide such a meta manifold (keeping my last comment in mind) – you are of course very welcome to contribute a PR :) |
Beta Was this translation helpful? Give feedback.
-
Hello! First, I'd like to express my gratitude for the fantastic package you've provided.
I might have overlooked this in the documentation, but is there a more streamlined method to implement manifolds than the one described here How to implement your own manifold?
Specifically, I'm interested in the linear transformation of the manifold with a non-zero determinant. For instance, if I'm aiming to implement the Negative Numbers manifold, is there a way to leverage or repurpose the Positive Numbers manifold for this?
Beta Was this translation helpful? Give feedback.
All reactions