Combinations of Manifolds

# Special Manifolds build upon one or more Riemannian manifolds

## Tangent bundle

The tangent bundle $T\mathcal M$ of a manifold $\mathcal M$ consists of all tuples $(x,\xi) \in T\mathcal M$, where $\xi\in T_x\mathcal M$, $x\in \mathcal M$, where the metric is inherited component wise and for the exponential and logarithmic map, the second component requires a parallelTransport.

### Tangent Bundle Types

TBPoint <: MPoint

A point $N\in \mathcal M$ on the manifold $\mathcal M = T\mathcal N$ represented by a tuple (x,ξ), where $x\in\mathcal N$ is a point on the manifold and $\xi=\xi_x\in T_x\mathcal N$ is a point in the tangent space at $x$.

Two constructors are available:

• TBPoint(x,ξ) to construct a tangent bundle point by specifying both an MPoint x and a TVector ξ.
• TBPoint( (X) ) to construct a tangent bundle point from a tuple X=(x,ξ),

i.e. the value of another tangent bundle point.

source
TBTVector <: TVector

A tangent vector $\Xi \in T_X\mathcal M$ on the manifold $\mathcal M = T\mathcal N$ for the (base) manifold $\mathcal N$. Both tangent components can be represented by elements from the base point $x$ from within $X=(x,\xi)$. Both components are from the same space since $TT_x\mathcal N= T_x\mathcal N$, hence the tangent vector is a tuple $(\xi\,\nu)\in T_x\mathcal N\times T_x\mathcal N$. As for the TBPoint two constructors are available, one for stwo seperate tangent vectors, one for a tuple of two tangent vectors.

source
TangentBundle <: Manifold

The manifold $\mathcal M = T\mathcal N$ obtained by looking at the tangent bundle of a Manifolds tangent spaces. The manifold obtained is of dimension $2d$, where $d$ is the dimension of the manifold $\mathcal N$ considered.

To keep notations clear, small letters will always refer to points (x,y) or tangent vectors (ξ,η) on the manifold $\mathcal N$, while capital letters (X, Y, Z and Ξ,Η) will refer to points and tangent vectors in the tangent bundle respectively.

Abbreviation

TB

Constructor

TangentBundle(M)

generates the tangent bundle to the Manifold M.

source

### Tangent Bundle Functions

exp(M,X,Ξ[, t=1.0])

Compute the exponential map on the TangentBundle M$=T\mathcal N$ with respect to the TBPointX=(x,ξ) and the TBTVectorΞ=(Ξx,Ξξ), which consists of the exponential map in the first component (exp(x,Ξx,t) and a (scaled) addition in the second (ξ + tΞξ) in the second component followed by a parallel transport.

source
log(M,X,Y)

Compute the logarithmic map on the TangentBundle $\mathcal M=T\mathcal N$, i.e. the log for the base manifold component and a parallel transport and a minus for the tangent components.

source
dot(M,X,Ξ,Η)

Compute the Riemannian inner product for two TBTVectors Ξ and Η from $T_X\mathcal M$ of the TangentBundleM = TN given by the sum of the two inner products of the tangent vector components

source
norm(M,X,Ξ)

Computes the norm of the TBTVectorΞ in the tangent space $T_x\mathcal M$ at TBPointX of the TangentBundle M.

source
distance(M,X,Y)

Compute the Riemannian distance on $\mathcal M=T\mathcal N$ by employing the distance on the manifold for the base component and the vector norm on the tangent space, and then take the Eucklidean Norm of the vector from $\mathbb R^2$.

source
getBase(Ξ)

return the base of the TBTVectorΞ, i.e. its first TVector.

source
getBase(M)

return the base manifold of the TangentBundle Manifold M.

source
getBase(X)

return the base of the TBPointX, i.e. its MPoint.

source
getTangent(Ξ)

return the tangent of the TBTVectorΞ, i.e. its second TBTVector.

source
getTangent(X)

return the tangent of the TBPointX, i.e. the its TVector.

source
getValue(Ξ)

return the Tuple contained in the TBTVectorΞ, i.e. its tuple of two TVectors.

source
getValue(X)

return the value of the TBPoint X, i.e. the Tuple of a MPoint and its TVector.

source
manifoldDimension(X)

returns the dimension of the TangentBundle M$=T\mathcal N$ to which X bvelongs, which is twice the dimension of the base manifold.

source
manifoldDimension(M)

returns the dimension of the TangentBundle M$=T\mathcal N$, i.e., twice the dimension of the base manifold N.

source
parallelTransport(M,X,Y,Ξ)

Compute the paralllel transport of the TBTVectorΞ from the tangent space $T_X\mathcal M$ at TBPointX to $T_Y\mathcal M$ at TBPointY on the TangentBundle M provided that the corresponding geodesic $g(\cdot;x,y)$ is unique. Then both components of $\Xi=(\Xi_x,\Xi_\xi)$ are parallely transported using the parallel transport of the underlying base manifold.

source
randomMPoint(M)

returns a random point on the TangentBundle M by producing a randomMPoint random point on the base manifold and randomTVector in the correspoinding tangent plane.

source
randomTVector(M,x)

returns a random tangent vector the TangentBundle M by producing two randomTVectors in the correspoinding tangent plane of the getBase of the TBPoint x.

source
tangentONB(M,X,Y)

constructs a tangent ONB in the tangent space of the TBPointX on the TangentBundle M, where $\log_XY$ is the first component.

source
Η,κ = tangentONB(M,X,Ξ)

constructs a tangent ONB in $T_X\mathcal M$, i.e. in the tangent space of the TBPoint x on the TangentBundle M whose first vector is given by the TBTVectorΞ. It is constructed by using twice the tangent ONB of the base manifold.

source
typicalDistance(M)

returns the typical distance on the TangentBundle M, i.e. for $\mathcal M = T\mathcal N$ we obtain $t_{\mathcal M} = \sqrt{t_{\mathcal N}^2 + d_{\mathcal N}^2}$, where $d$ denotes the manifold dimension.

source
validateMPoint(M,X)

validate that the TBPointX is a valid point on the TangentBundle M, i.e. the first component is a point on the base manifold and the second a tangent vector is the tangent space of the first

source
validateTVector(M,X,Ξ)

validate, that the TBTVectorΞ is a valid tangent vector in the tangent space of the TBPointX on the TangentBundle M, i.e. both components of Ξ are tangent vectors in the tangent space of the base component of X, since the tangent space of the tangent space is represented as the tangent space itself.

source
zeroTVector(M,X)

returns a zero vector in the tangent space $T_X\mathcal M$ of the TangentBundle $X=(x,ξ)\in T\mathcal N$ by creating two zero vectors in $T_x\mathcal M$.

source

## Power Manifold

The product manifold $\mathcal M^n$, where $n\in\mathbb N^k$ represents arrays that are manifold-valued, for example, if $n$ is a number ($k=1$) we obtain a manifold-valued signal $f\in\mathcal M^n$. Many operations are performed element wise, while for example the distance on the power manifold is the $\ell^2$ norm of the element wise distances.

### Power Manifold Types

PowPoint <: MPoint

A point on the power manifold $\mathcal M = \mathcal N^n$ represented by an array (of size n) of MPoints.

source
PowTVector <: TVector

A tangent vector on the power manifold $\mathcal M = \mathcal N^n$ represented by an array (of size n) of TVectors.

source
Power{M<:Manifold} <: Manifold

A power manifold $\mathcal M = \mathcal N^n$, where $n$ can be an integer or an integer vector.

Abbreviation

Pow

Constructors

Power(M,n)

construct the power manifold $\mathcal M^n$ for a Manifold M and a natural number n.

Power(M,n)

construct the power manifold $\mathcal M^{n_1\times n_2\times\cdots\times n_d}$ for a Manifold M and a Tuple or Array n of natural numbers.

source

### Power Manifold Functions

exp(M,x,ξ[, t=1.0])

compute the product exponential map on the Power manifold M and return the corresponding PowPoint.

source
log(M,x,y)

compute the product logarithmic map on the Power manifold M and return the corresponding PowTVector.

source
dot(M,x,ξ,ν)

compute the inner product as sum of the component inner products on the Power manifold M.

source
norm(M,x,ξ)

compute the norm of the [PowTVector] ξ induced by the metric on the manifold components of the Power manifold M.

source
distance(M,x,y)

compute a vectorized version of distance on the [Power] manifold M for two PowPoint x and y.

source
manifoldDimension(x)

return the (product of) dimension(s) of the Power the PowPointx belongs to.

source
manifoldDimension(M)

return the (product of) dimension(s) of the Power manifold M.

source
parallelTransport(M,x,y,ξ)

compute the product parallelTransport map on the Power manifold M from the PowPoint x to y of the PowTVector ξ.

source
project(M,x,v)

compute the product project map on the Power manifold M of the PowPoint x. v is an array of the elements, embedded in the same space as the manifold, which get projected elementwise.

source
randomMPoint(M)

construct a random point on the Power manifold M, by creating n points on the Manifold M.manifold as corresponding PowPoint. Optional values are passed down.

source
randomTVector(M,x)

construct a random tangent vector on the Power manifold M, by creating n tangent vectors on the Manifold M.manifold at the enrties of the PowPoint x. Optional values are passed down.

source
(Ξ,κ) = tangentONB(M,x,y)

compute an ONB within the tangent space $T_x\mathcal M$ such that $\xi=\log_xy$ is the first vector and compute the eigenvalues of the curvature tensor $R(\Xi,\dot g)\dot g$, where $g=g_{x,\xi}$ is the geodesic with $g(0)=x$, $\dot g(0) = \xi$, i.e. $\kappa_1$ corresponding to $\Xi_1=\xi$ is zero.

source
typicalDistance(M)

returns the typical distance on the Power manifold M, which is based on the elementwise manifold.

source
ξ = zeroTVector(M,x)

returns a zero vector in the tangent space $T_x\mathcal M$ of the PowPoint $x\in\mathcal M$ on the Power manifold M.

source

## Product Manifold

A little more general is the product manifold, where $\mathcal M = \mathcal N_1\times\cdots\times\mathcal N_n$, $n\in\mathbb N^k$ is a product of manifolds, i.e. for a value $f\in\mathcal M$ we have that $f_i\in\mathcal N_i$, where $i$ might be a multi-index.

### Product Manifold Types

ProdPoint <: MPoint

A point on the Product $\mathcal M = \mathcal N_1\times\mathcal N_2\times\cdots\times\mathcal N_m$,$m\in\mathbb N$, represented by a vector or array of MPoints.

source
ProdTVector <: TVector

A tangent vector in the product of tangent spaces of the Product $T\mathcal M = T\mathcal N_1\times T\mathcal N_2\times\cdots\times T\mathcal N_m$,$m\in\mathbb N$, represented by a vector or array of TVectors.

source
Product{M<:Manifold} <: Manifold

a product manifold $\mathcal M = \mathcal N_1\times\mathcal N_2\times\cdots\times\mathcal N_m$, $m\in\mathbb N$, concatinates a set of manifolds $\mathcal N_i$, $i=1,\ldots,m$, into one using the sum of the metrics to impose a metric on this manifold. The manifold can also be an arbitrary Array of manifolds, not necessarily only a vector.

Abbreviation

Prod

Constructor

Product(m)

constructs a Power Manifold based on an array m of Manifolds.

source

### Product Manifold Functions

exp(M,x,ξ)

computes the product exponential map on the Product manifold M and returns the corresponding ProdPoint.

source

log(M,x,y)

computes the product logarithmic map from ProdPoint x to y on the Product manifold M and returns the corresponding ProdTVector.

source
dot(M,x,ξ,ν)

compute the inner product as sum of the component inner products on the Product manifold M.

source
norm(M,x,ξ)

norm of the ProdTVector ξ induced by the metric on the manifold components of the Product manifold M.

source
distance(M,x,y)

compute a vectorized version of distance for two ProdPoints x and y on the Product manifold M.

source
manifoldDimension(x)

returns the (product of) dimension(s) of the Product manifold M the ProdPoint x belongs to.

source
manifoldDimension(M)

returns the (product of) dimension(s) of the Product manifold M.

source
parallelTransport(M,x,ξ)

computes the product parallelTransport map on the Product manifold M and returns the corresponding ProdTVector.

source
project(M,x,v)

compute the product project map on the Product manifold M of the ProdPoint x. v is an array of the elements, embedded in the same space as the manifold, which get projected elementwise.

source
randomMPoint(M)

generate a random point on Product manifold M.

source
randomTVector(M,x)

generate a random tangent vector in the tangent space of the ProdPoint x on Product manifold M.

source
retraction(M,x,ξ [,t=1.0])

move the ProdPoint x in the direction of the ProdTVector ξ on the Product manifold M.

source
typicalDistance(M)

returns the typical distance on Product manifold M, which is the minimum of the internal ones.

source
validateMPoint(M,x)

validate, that the ProdPoint x is a point on the Product manifold M, i.e. that the array dimensions are correct and that all elements are valid points on each elements manifolds

source
validateTVector(M,x,ξ)

validate, that the ProdTVector ξ is a valid tangent vector to the ProdPoint x on the Product manifold M, i.e. that all three array dimensions match and this validation holds elementwise.

source
ξ = zeroTVector(M,x)

returns a zero vector in the tangent space $T_x\mathcal M$ of the ProdPoint $x\in\mathcal M$ on the Product manifold M.

source