Sphere and unit norm arrays

Manifolds.AbstractSphere โ€” Type
AbstractSphere{๐”ฝ} <: AbstractEmbeddedManifold{๐”ฝ,DefaultIsometricEmbeddingType}

An abstract type to represent a unit sphere that is represented isometrically in the embedding.

source

The classical sphere, i.e. unit norm (real- or complex-valued) vectors can be generated as usual: to create the 2-dimensional sphere (in $โ„^3$), use Sphere(2) and Sphere(2,โ„‚), respectively.

Manifolds.Sphere โ€” Type
Sphere{n,๐”ฝ} <: AbstractSphere{๐”ฝ}

The (unit) sphere manifold $๐•Š^{n}$ is the set of all unit norm vectors in $๐”ฝ^{N}$, ๐”ฝ elements. The sphere is represented in the embedding, i.e.

\[๐•Š^{n} := \bigl\{ p \in ๐”ฝ^{n+1}\ \big|\ \lVert p \rVert = 1 \bigr\}\]

where $๐”ฝ\in\{โ„,โ„‚\}$. Note that compared to the ArraySphere, here the argument n of the manifold is the dimension of the manifold, i.e. $๐•Š^{n} โŠ‚ ๐”ฝ^{n+1}$, $n\in โ„•$.

The tangent space at point $p$ is given by

\[T_p๐•Š^{n} := \bigl\{ X โˆˆ ๐”ฝ^{n+1}\ |\ โŸจp,XโŸฉ = 0 \bigr \},\]

where $๐”ฝ\in\{โ„,โ„‚\} and $โŸจ\cdot,\cdotโŸฉ$ denotes the inner product in the embedding $\mathbb ๐”ฝ^{n+1}$.

This manifold is modeled as a special case of the more general case, i.e. as an embedded manifold to the Euclidean, and several functions like the inner product and the zero_tangent_vector are inherited from the embedding.

Constructor

Sphere(n[, field=โ„])

Generate the (real-valued) sphere $๐•Š^{n} โŠ‚ โ„^{n+1}$, where field can also be used to generate the complex-valued sphere.

source

For the higher-dimensional arrays, for example unit (Frobenius) norm matrices, the manifold is generated using the size of the matrix. To create the unit sphere of $3ร—2$ real-valued matrices, write ArraySphere(3,2) and the complex case is done โ€“ as for the Euclidean case โ€“ with an keyword argument ArraySphere(3,2; field = โ„‚). This case also covers the classical sphere as a special case, but you specify the size of the vectors/embedding instead: The 2-sphere can here be generated ArraySphere(3).

Manifolds.ArraySphere โ€” Type
ArraySphere{T<:Tuple,๐”ฝ} <: AbstractSphere{๐”ฝ}

The (unit) sphere manifold $๐•Š^{nโ‚,nโ‚‚,...,nแตข}$ is the set of all unit (Frobenius) norm elements of $๐”ฝ^{nโ‚,nโ‚‚,...,nแตข}$, where ๐”ฝ\in{โ„,โ„‚}. The generalized sphere is represented in the embedding, and supports arbitrary sized arrays or in other words arbitrary tensors of unit norm. The set formally reads

\[๐•Š^{n_1, n_2, โ€ฆ, n_i} := \bigl\{ p \in ๐”ฝ^{n_1, n_2, โ€ฆ, n_i}\ \big|\ \lVert p \rVert = 1 \bigr\}\]

where $๐”ฝ\in\{โ„,โ„‚\}$. Setting $i=1$ and $๐”ฝ=โ„$ this simplifies to unit vectors in $โ„^n$, see Sphere for this special case. Note that compared to this classical case, the argument for the generalized case here is given by the dimension of the embedding. This means that Sphere(2) and ArraySphere(3) are the same manifold.

The tangent space at point p is given by

\[T_p๐•Š^{n_1, n_2, โ€ฆ, n_i} := \bigl\{ X โˆˆ ๐”ฝ^{n_1, n_2, โ€ฆ, n_i}\ |\ โŸจp,XโŸฉ = 0 \bigr \},\]

where $๐”ฝ\in\{โ„,โ„‚\}$ and $โŸจ\cdot,\cdotโŸฉ$ denotes the inner product in the embedding $\mathbb ๐”ฝ^{n_1, n_2, โ€ฆ, n_i}$.

This manifold is modeled as an embedded manifold to the Euclidean, i.e. several functions like the inner product and the zero_tangent_vector are inherited from the embedding.

Constructor

ArraySphere(nโ‚,nโ‚‚,...,nแตข; field=โ„))

Generate sphere in $๐”ฝ^{n_1, n_2, โ€ฆ, n_i}$, where ๐”ฝ defaults to the real-valued case โ„.

source

Functions on unit spheres

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

Compute the exponential map from p in the tangent direction X on the AbstractSphere M by following the great arc eminating from p in direction X.

\[\exp_p X = \cos(\lVert X \rVert_p)p + \sin(\lVert X \rVert_p)\frac{X}{\lVert X \rVert_p}X,\]

where $\lVert X \rVert_p$ is the norm on the tangent space at p of the AbstractSphere M.

source
Base.log โ€” Method
log(M::AbstractSphere, p, q)

Compute the logarithmic map on the AbstractSphere M, i.e. the tangent vector, whose geodesic starting from p reaches q after time 1. The formula reads for $x โ‰  -y$

\[\log_p q = d_{๐•Š}(p,q) \frac{q-โŸจp,qโŸฉ p}{\lVert q-โŸจp,qโŸฉ p \rVert_2},\]

and a deterministic choice from the set of tangent vectors is returned if $x=-y$, i.e. for opposite points.

source
Manifolds.normal_tvector_distribution โ€” Method
normal_tvector_distribution(S::Sphere{n,โ„}, p, ฯƒ)

Generate a distribution in the tangent space at p by generating a normal distribution in ambient space with standard deviation ฯƒ projected to the tangent space at p.

source
ManifoldsBase.check_manifold_point โ€” Method
check_manifold_point(M::AbstractSphere, p; kwargs...)

Check whether p is a valid point on the AbstractSphere M, i.e. is a point in the embedding of unit length. The tolerance for the last test can be set using the kwargs....

source
ManifoldsBase.distance โ€” Method
distance(M::AbstractSphere, p, q)

Compute the geodesic distance betweeen p and q on the AbstractSphere M. The formula is given by the (shorter) great arc length on the (or a) great circle both p and q lie on.

\[d_{๐•Š}(p,q) = \arccos(โŸจp,qโŸฉ).\]
source
ManifoldsBase.get_coordinates โ€” Method
get_coordinates(M::Sphere, p, X, B::DefaultOrthonormalBasis)

Represent the tangent vector X at point p from the Sphere M in an orthonormal basis by rotating the vector X using the rotation matrix $2\frac{q q^\mathrm{T}}{q^\mathrm{T} q} - I$ where $q = p + (1, 0, โ€ฆ, 0)$.

source
ManifoldsBase.inverse_retract โ€” Method
inverse_retract(M::AbstractSphere, p, q, ::ProjectionInverseRetraction)

Compute the inverse of the projection based retraction on the AbstractSphere M, i.e. rearranging $p+X = q\lVert p+X\rVert_2$ yields since $โŸจp,XโŸฉ = 0$ and when $d_{๐•Š^2}(p,q) โ‰ค \frac{ฯ€}{2}$ that

\[\operatorname{retr}_p^{-1}(q) = \frac{q}{โŸจp, qโŸฉ} - p.\]
source
ManifoldsBase.project โ€” Method
project(M::AbstractSphere, p, X)

Project the point X onto the tangent space at p on the Sphere M.

\[\operatorname{proj}_{p}(X) = X - โŸจp, XโŸฉp\]
source
ManifoldsBase.project โ€” Method
project(M::AbstractSphere, p)

Project the point p from the embedding onto the Sphere M.

\[ \operatorname{proj}(p) = \frac{p}{\lVert p \rVert},\]

where $\lVert\cdot\rVert$ denotes the usual 2-norm for vectors if $m=1$ and the Frobenius norm for the case $m>1$.

source
ManifoldsBase.retract โ€” Method
retract(M::AbstractSphere, p, X, ::ProjectionRetraction)

Compute the retraction that is based on projection, i.e.

\[\operatorname{retr}_p(X) = \frac{p+X}{\lVert p+X \rVert_2}\]
source
ManifoldsBase.vector_transport_to โ€” Method
vector_transport_to(M::AbstractSphere, p, X, q, ::ParallelTransport)

Compute the parallel transport on the Sphere of the tangent vector X at p to q, provided, the geodesic between p and q is unique. The formula reads

\[P_{pโ†q}(X) = X - \frac{\langle \log_p q,X\rangle_p}{d^2_๐•Š(p,q)} \bigl(\log_xy + \log_yx \bigr).\]
source