antoine-levitt / Manifolds.jl

Other
1 stars 0 forks source link

Manifolds

Define an interface for working on manifolds, as well as a set of predefined manifolds. The target use is optimization of differential equation integration that stay on a specific manifold at each step of the algorithm.

Example

using Manifolds
M = Sphere()
x = randn(3)
@assert norm(retract(M, x)) ≈ 1

Interface

The following functions are supported:

Supported manifolds

The following manifolds are currently supported:

The following meta-manifolds construct manifolds out of pre-existing ones:

Implementing new manifolds is as simple as adding methods project_tangent!(M::YourManifold,g,x) and retract!(M::YourManifold,x). If you implement another manifold, please contribute a PR!

References

The Geometry of Algorithms with Orthogonality Constraints, Alan Edelman, Tomás A. Arias, Steven T. Smith, SIAM. J. Matrix Anal. & Appl., 20(2), 303–353

Optimization Algorithms on Matrix Manifolds, P.-A. Absil, R. Mahony, R. Sepulchre, Princeton University Press, 2008