Euclidean space

The Euclidean space $ℝ^n$ is a simple model space, since it has curvature constantly zero everywhere; hence, nearly all operations simplify. The easiest way to generate an Euclidean space is to use a field, i.e. AbstractNumbers, e.g. to create the $ℝ^n$ or $ℝ^{n\times n}$ you can simply type M = ℝ^n or ℝ^(n,n), respectively.

Manifolds.EuclideanType
Euclidean{T<:Tuple,𝔽} <: Manifold{𝔽}

Euclidean vector space.

Constructor

Euclidean(n)

Generate the $n$-dimensional vector space $ℝ^n$.

Euclidean(n₁,n₂,...,nᵢ; field=ℝ)
𝔽^(n₁,n₂,...,nᵢ) = Euclidean(n₁,n₂,...,nᵢ; field=𝔽)

Generate the vector space of $k = n_1 \cdot n_2 \cdot … \cdot n_i$ values, i.e. the manifold $𝔽^{n_1, n_2, …, n_i}$, $𝔽\in\{ℝ,ℂ\}$, whose elements are interpreted as $n_1 × n_2 × … × n_i$ arrays. For $i=2$ we obtain a matrix space. The default field=ℝ can also be set to field=ℂ. The dimension of this space is $k \dim_ℝ 𝔽$, where $\dim_ℝ 𝔽$ is the real_dimension of the field $𝔽$.

Manifolds.EuclideanMetricType
EuclideanMetric <: RiemannianMetric

A general type for any manifold that employs the Euclidean Metric, for example the Euclidean manifold itself, or the Sphere, where every tangent space (as a plane in the embedding) uses this metric (in the embedding).

Since the metric is independent of the field type, this metric is also used for the Hermitian metrics, i.e. metrics that are analogous to the EuclideanMetric but where the field type of the manifold is .

This metric is the default metric for example for the Euclidean manifold.

Base.expMethod
exp(M::Euclidean, p, X)

Compute the exponential map on the Euclidean manifold M from p in direction X, which in this case is just

\[\exp_p X = p + X.\]

Base.logMethod
log(M::Euclidean, p, q)

Compute the logarithmic map on the EuclideanM from p to q, which in this case is just

\[\log_p q = q-p.\]

LinearAlgebra.normMethod
norm(M::Euclidean, p, X)

Compute the norm of a tangent vector X at p on the EuclideanM, i.e. since every tangent space can be identified with M itself in this case, just the (Frobenius) norm of X.

Manifolds.flatMethod
flat(M::Euclidean, p, X)

Transform a tangent vector X into a cotangent. Since they can directly be identified in the Euclidean case, this yields just the identity for a tangent vector w in the tangent space of p on M.

Manifolds.normal_tvector_distributionMethod
normal_tvector_distribution(M::Euclidean, p, σ)

Normal distribution in ambient space with standard deviation σ projected to tangent space at p.

Manifolds.projected_distributionMethod
projected_distribution(M::Euclidean, d, [p])

Wrap the standard distribution d into a manifold-valued distribution. Generated points will be of similar type to p. By default, the type is not changed.

Manifolds.sharpMethod
sharp(M::Euclidean, p, ξ)

Transform the cotangent vector ξ at p on the EuclideanM to a tangent vector X. Since cotangent and tangent vectors can directly be identified in the Euclidean case, this yields just the identity.

ManifoldsBase.distanceMethod
distance(M::Euclidean, p, q)

Compute the Euclidean distance between two points on the Euclidean manifold M, i.e. for vectors it's just the norm of the difference, for matrices and higher order arrays, the matrix and ternsor Frobenius norm, respectively.

ManifoldsBase.embedMethod
embed(M::Euclidean, p, X)

Embed the tangent vector X at point p in M. Equivalent to an identity map.

ManifoldsBase.embedMethod
embed(M::Euclidean, p)

Embed the point p in M. Equivalent to an identity map.

ManifoldsBase.innerMethod
inner(M::Euclidean, p, X, Y)

Compute the inner product on the EuclideanM, which is just the inner product on the real-valued or complex valued vector space of arrays (or tensors) of size $n_1 × n_2 × … × n_i$, i.e.

\[g_p(X,Y) = \sum_{k ∈ I} \overline{X}_{k} Y_{k},\]

where $I$ is the set of vectors $k ∈ ℕ^i$, such that for all $1 ≤ j ≤ i$ it holds $1 ≤ k_j ≤ n_j$ and $\overline{\cdot}$ denotes the complex conjugate.

For the special case of $i ≤ 2$, i.e. matrices and vectors, this simplifies to

\[g_p(X,Y) = X^{\mathrm{H}}Y,\]

where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

ManifoldsBase.projectMethod
project(M::Euclidean, p, X)

Project an arbitrary vector X into the tangent space of a point p on the EuclideanM, which is just the identity, since any tangent space of M can be identified with all of M.

ManifoldsBase.projectMethod
project(M::Euclidean, p)

Project an arbitrary point p onto the Euclidean manifold M, which is of course just the identity map.

ManifoldsBase.vector_transport_toMethod
vector_transport_to(M::Euclidean, p, X, q, ::AbstractVectorTransportMethod)

Transport the vector X from the tangent space at p to the tangent space at q on the EuclideanM, which simplifies to the identity.