Positive Numbers
The manifold PositiveNumbers
represents positive numbers with hyperbolic geometry. Additionally, there are also short forms for its corresponding PowerManifold
s, i.e. PositiveVectors
, PositiveMatrices
, and PositiveArrays
.
Manifolds.PositiveNumbers
— TypePositiveNumbers <: AbstractManifold{ℝ}
The hyperbolic manifold of positive numbers $H^1$ is a the hyperbolic manifold represented by just positive numbers.
Constructor
PositiveNumbers()
Generate the ℝ
-valued hyperbolic model represented by positive positive numbers. To use this with arrays (1-element arrays), please use SymmetricPositiveDefinite
(1)
.
Base.exp
— Methodexp(M::PositiveNumbers, p, X)
Compute the exponential map on the PositiveNumbers
M
.
\[\exp_p X = p\operatorname{exp}(X/p).\]
Base.log
— Methodlog(M::PositiveNumbers, p, q)
Compute the logarithmic map on the PositiveNumbers
M
.
\[\log_p q = p\log\frac{q}{p}.\]
Manifolds.PositiveArrays
— MethodPositiveArrays(n₁,n₂,...,nᵢ)
Generate the manifold of i
-dimensional arrays with positive entries. This manifold is modeled as a PowerManifold
of PositiveNumbers
.
Manifolds.PositiveMatrices
— MethodPositiveMatrices(m,n)
Generate the manifold of matrices with positive entries. This manifold is modeled as a PowerManifold
of PositiveNumbers
.
Manifolds.PositiveVectors
— MethodPositiveVectors(n)
Generate the manifold of vectors with positive entries. This manifold is modeled as a PowerManifold
of PositiveNumbers
.
ManifoldsBase.change_metric
— Methodchange_metric(M::PositiveNumbers, E::EuclideanMetric, p, X)
Given a tangent vector $X ∈ T_p\mathcal M$ representing a linear function with respect to the EuclideanMetric
g_E
, this function changes the representer into the one with respect to the positivity metric of PositiveNumbers
M
.
For all $Z,Y$ we are looking for the function $c$ on the tangent space at $p$ such that
\[ ⟨Z,Y⟩ = XY = \frac{c(Z)c(Y)}{p^2} = g_p(c(Y),c(Z))\]
and hence $C(X) = pX$.
ManifoldsBase.change_representer
— Methodchange_representer(M::PositiveNumbers, E::EuclideanMetric, p, X)
Given a tangent vector $X ∈ T_p\mathcal M$ representing a linear function with respect to the EuclideanMetric
g_E
, this function changes the representer into the one with respect to the positivity metric representation of PositiveNumbers
M
.
For all tangent vectors $Y$ the result $Z$ has to fulfill
\[ ⟨X,Y⟩ = XY = \frac{ZY}{p^2} = g_p(YZ)\]
and hence $Z = p^2X$
ManifoldsBase.check_point
— Methodcheck_point(M::PositiveNumbers, p)
Check whether p
is a point on the PositiveNumbers
M
, i.e. $p>0$.
ManifoldsBase.check_vector
— Methodcheck_vector(M::PositiveNumbers, p, X; kwargs...)
Check whether X
is a tangent vector in the tangent space of p
on the PositiveNumbers
M
. For the real-valued case represented by positive numbers, all X
are valid, since the tangent space is the whole real line. For the complex-valued case X
[...]
ManifoldsBase.distance
— Methoddistance(M::PositiveNumbers, p, q)
Compute the distance on the PositiveNumbers
M
, which is
\[d(p,q) = \Bigl\lvert \log \frac{p}{q} \Bigr\rvert = \lvert \log p - \log q\rvert.\]
ManifoldsBase.get_coordinates
— Methodget_coordinates(::PositiveNumbers, p, X, ::DefaultOrthonormalBasis{ℝ})
Compute the coordinate of vector X
which is tangent to p
on the PositiveNumbers
manifold. The formula is $X / p$.
ManifoldsBase.get_vector
— Methodget_vector(::PositiveNumbers, p, c, ::DefaultOrthonormalBasis{ℝ})
Compute the vector with coordinate c
which is tangent to p
on the PositiveNumbers
manifold. The formula is $p * c$.
ManifoldsBase.injectivity_radius
— Methodinjectivity_radius(M::PositiveNumbers[, p])
Return the injectivity radius on the PositiveNumbers
M
, i.e. $\infty$.
ManifoldsBase.inner
— Methodinner(M::PositiveNumbers, p, X, Y)
Compute the inner product of the two tangent vectors X,Y
from the tangent plane at p
on the PositiveNumbers
M
, i.e.
\[g_p(X,Y) = \frac{XY}{p^2}.\]
ManifoldsBase.is_flat
— Methodis_flat(::PositiveNumbers)
Return false. PositiveNumbers
is not a flat manifold.
ManifoldsBase.manifold_dimension
— Methodmanifold_dimension(M::PositiveNumbers)
Return the dimension of the PositiveNumbers
M
, i.e. of the 1-dimensional hyperbolic space,
\[\dim(H^1) = 1\]
ManifoldsBase.parallel_transport_to
— Methodparallel_transport_to(M::PositiveNumbers, p, X, q)
Compute the parallel transport of X
from the tangent space at p
to the tangent space at q
on the PositiveNumbers
M
.
\[\mathcal P_{q\gets p}(X) = X\cdot\frac{q}{p}.\]
ManifoldsBase.project
— Methodproject(M::PositiveNumbers, p, X)
Project a value X
onto the tangent space of the point p
on the PositiveNumbers
M
, which is just the identity.