Hyperbolic space
Manifolds.Hyperbolic — TypeHyperbolic{N} <: AbstractEmbeddedManifold{ℝ,DefaultIsometricEmbeddingType}The hyperbolic space $ℍ^n$ represented by $n+1$-Tuples, i.e. embedded in the Lorentzian manifold equipped with the MinkowskiMetric $⟨\cdot,\cdot⟩_{\mathrm{M}}$. The space is defined as
The tangent space $T_p ℍ^n$ is given by
Note that while the MinkowskiMetric renders the Lorentz manifold (only) pseudo-Riemannian, on the tangent bundle of the Hyperbolic space it induces a Riemannian metric. The corresponding sectional curvature is $-1$.
Constructor
Hyperbolic(n)Generate the $ℍ^{n} ⊂ ℝ^{n+1}$
Base.exp — Methodexp(M::Hyperbolic, p, X)Compute the exponential map on the Hyperbolic space $ℍ^n$ emanating from p towards X. The formula reads
where $⟨\cdot,\cdot⟩_{\mathrm{M}}$ denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.
Base.log — Methodlog(M::Hyperbolic, p, q)Compute the logarithmic map on the Hyperbolic space $ℍ^n$, the tangent vector representing the geodesic starting from p reaches q after time 1. The formula reads for $p ≠ q$
where $⟨\cdot,\cdot⟩_{\mathrm{M}}$ denotes the MinkowskiMetric on the embedding, the Lorentzian manifold. For $p=q$ the logarihmic map is equal to the zero vector.
ManifoldsBase.check_manifold_point — Methodcheck_manifold_point(M::Hyperbolic, p; kwargs...)Check whether p is a valid point on the Hyperbolic M, i.e. is a p vector with inner product in the embedding of -1, see MinkowskiMetric. The tolerance for the last test can be set using the kwargs....
ManifoldsBase.check_tangent_vector — Methodcheck_tangent_vector(M::Hyperbolic, p, X; check_base_point = true, kwargs... )Check whether X is a tangent vector to p on the Hyperbolic M, i.e. after check_manifold_point(M,p), X has to be of the same dimension as p and orthogonal to p with respect to the inner product from the embedding, see MinkowskiMetric. The optional parameter check_base_point indicates whether to call check_manifold_point for p. The tolerance for the last test can be set using the kwargs....
ManifoldsBase.distance — Methoddistance(M::Hyperbolic, p, q)Compute the distance on the Hyperbolic M, which reads
where $⟨\cdot,\cdot⟩_{\mathrm{M}}$ denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.
ManifoldsBase.injectivity_radius — Methodinjectivity_radius(M::Hyperbolic)
injectivity_radius(M::Hyperbolic, p)Return the injectivity radius on the Hyperbolic, which is $∞$.
ManifoldsBase.manifold_dimension — Methodmanifold_dimension(H::Hyperbolic)Return the dimension of the hyperbolic space manifold $ℍ^n$, i.e. $\dim(ℍ^n) = n$.
ManifoldsBase.project — Methodproject(M::Hyperbolic, p, X)Perform an orthogonal projection with respect to the Minkowski inner product of X onto the tangent space at p of the Hyperbolic space M.
The formula reads
where $⟨\cdot, \cdot⟩_{\mathrm{M}}$ denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.
ManifoldsBase.vector_transport_to — Methodvector_transport_to(M::Hyperbolic, p, X, q, ::ParallelTransport)Compute the paralllel transport of the X from the tangent space at p on the Hyperbolic space $ℍ^n$ to the tangent at q along the geodesic connecting p and q. The formula reads
where $⟨\cdot,\cdot⟩_p$ denotes the inner product in the tangent space at p.
Statistics.mean — Methodmean(
M::Hyperbolic,
x::AbstractVector,
[w::AbstractWeights,]
method = CyclicProximalPointEstimationMethod();
kwargs...,
)Compute the Riemannian mean of x on the Hyperbolic space using CyclicProximalPointEstimation.