Product manifold

Product manifold $\mathcal M = \mathcal{M}_1 Γ— \mathcal{M}_2 Γ— … Γ— \mathcal{M}_n$ of manifolds $\mathcal{M}_1, \mathcal{M}_2, …, \mathcal{M}_n$. Points on the product manifold can be constructed using ArrayPartition (from RecursiveArrayTools.jl) with canonical projections $Ξ _i : \mathcal{M} β†’ \mathcal{M}_i$ for $i ∈ 1, 2, …, n$ provided by submanifold_component.

Manifolds.ProductFVectorDistribution β€” Type
ProductFVectorDistribution([type::VectorSpaceFiber], [x], distrs...)

Generates a random vector at point x from vector space (a fiber of a tangent bundle) of type type using the product distribution of given distributions.

Vector space type and x can be automatically inferred from distributions distrs.

source
ManifoldDiff.riemannian_Hessian β€” Method
Y = riemannian_Hessian(M::ProductManifold, p, G, H, X)
riemannian_Hessian!(M::ProductManifold, Y, p, G, H, X)

Compute the Riemannian Hessian $\operatorname{Hess} f(p)[X]$ given the Euclidean gradient $βˆ‡ f(\tilde p)$ in G and the Euclidean Hessian $βˆ‡^2 f(\tilde p)[\tilde X]$ in H, where $\tilde p, \tilde X$ are the representations of $p,X$ in the embedding,.

On a product manifold, this decouples and can be computed elementwise.

source
Manifolds.flat β€” Method
flat(M::ProductManifold, p, X::FVector{TangentSpaceType})

use the musical isomorphism to transform the tangent vector X from the tangent space at p on the ProductManifold M to a cotangent vector. This can be done elementwise for every entry of X (with respect to the corresponding entry in p) separately.

source
Manifolds.sharp β€” Method
sharp(M::ProductManifold, p, ΞΎ::FVector{CotangentSpaceType})

Use the musical isomorphism to transform the cotangent vector ΞΎ from the tangent space at p on the ProductManifold M to a tangent vector. This can be done elementwise for every entry of ΞΎ (and p) separately

source