Hyperbolic space
Manifolds.Hyperbolic
— TypeHyperbolic{N} <: AbstractEmbeddedManifold{ℝ,DefaultIsometricEmbeddingType}
The hyperbolic space $ℍ^n$ represented by $n+1$-Tuples, i.e. embedded in the Lorentz
ian 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 Lorentz
ian 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 Lorentz
ian 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 Lorentz
ian 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 Lorentz
ian 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 = CyclicProximalPointEstimation();
kwargs...,
)
Compute the Riemannian mean
of x
on the Hyperbolic
space using CyclicProximalPointEstimation
.