Positive Numbers

The manifold PositiveNumbers represents positive numbers with hyperbolic geometry. Additionally, there are also short forms for its corresponding PowerManifolds, i.e. PositiveVectors, PositiveMatrices, and PositiveArrays.

Manifolds.PositiveNumbers โ€” Type
PositiveNumbers <: 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).

source
Base.exp โ€” Method
exp(M::PositiveNumbers, p, X)

Compute the exponential map on the PositiveNumbers M.

\[\exp_p X = p\operatorname{exp}(X/p).\]

source
ManifoldDiff.riemannian_Hessian โ€” Method
riemannian_Hessian(M::SymmetricPositiveDefinite, p, G, H, X)

The Riemannian Hessian can be computed as stated in Eq. (7.3) [Ngu23]. Let $\nabla f(p)$ denote the Euclidean gradient G, $\nabla^2 f(p)[X]$ the Euclidean Hessian H. Then the formula reads

\[ \operatorname{Hess}f(p)[X] = p\bigl(โˆ‡^2 f(p)[X]\bigr)p + X\bigl(โˆ‡f(p)\bigr)p\]

source
Manifolds.PositiveArrays โ€” Method
PositiveArrays(nโ‚, nโ‚‚, ..., nแตข; parameter::Symbol=:type)

Generate the manifold of i-dimensional arrays with positive entries. This manifold is modeled as a PowerManifold of PositiveNumbers.

parameter: whether a type parameter should be used to store n. By default size is stored in a type parameter. Value can either be :field or :type.

source
Manifolds.PositiveMatrices โ€” Method
PositiveMatrices(m::Integer, n::Integer; parameter::Symbol=:type)

Generate the manifold of matrices with positive entries. This manifold is modeled as a PowerManifold of PositiveNumbers.

parameter: whether a type parameter should be used to store n. By default size is stored in a type parameter. Value can either be :field or :type.

source
Manifolds.PositiveVectors โ€” Method
PositiveVectors(n::Integer; parameter::Symbol=:type)

Generate the manifold of vectors with positive entries. This manifold is modeled as a PowerManifold of PositiveNumbers.

parameter: whether a type parameter should be used to store n. By default size is stored in a type parameter. Value can either be :field or :type.

source
ManifoldsBase.change_metric โ€” Method
change_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$.

source
ManifoldsBase.change_representer โ€” Method
change_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$

source
ManifoldsBase.check_vector โ€” Method
check_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 [...]

source
ManifoldsBase.distance โ€” Method
distance(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.\]

source
ManifoldsBase.get_vector โ€” Method
get_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$.

source
ManifoldsBase.inner โ€” Method
inner(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}.\]

source