Euclidean space

The Euclidean space Rnโ„^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 Rnโ„^n or Rnร—nโ„^{nร—n} you can simply type M = โ„^n or โ„^(n,n), respectively.

Manifolds.Euclidean โ€” Type
Euclidean{T,๐”ฝ} <: AbstractManifold{๐”ฝ}

Euclidean vector space.

Constructor

Euclidean(n)

Generate the nn-dimensional vector space Rnโ„^n.

Euclidean(nโ‚,nโ‚‚,...,nแตข; field=โ„, parameter::Symbol = :field)
๐”ฝ^(nโ‚,nโ‚‚,...,nแตข) = Euclidean(nโ‚,nโ‚‚,...,nแตข; field=๐”ฝ)

Generate the vector space of k=n1โ‹…n2โ‹…โ€ฆโ‹…nik = n_1 โ‹… n_2 โ‹… โ€ฆ โ‹… n_i values, i.e. the manifold ๐”ฝn1,n2,โ€ฆ,ni๐”ฝ^{n_1, n_2, โ€ฆ, n_i}, ๐”ฝโˆˆ{R,C}๐”ฝ\in\{โ„,โ„‚\}, whose elements are interpreted as n1ร—n2ร—โ€ฆร—nin_1 ร— n_2 ร— โ€ฆ ร— n_i arrays. For i=2i=2 we obtain a matrix space. The default field=โ„ can also be set to field=โ„‚. The dimension of this space is kdimโกR๐”ฝk \dim_โ„ ๐”ฝ, where dimโกR๐”ฝ\dim_โ„ ๐”ฝ is the real_dimension of the field ๐”ฝ๐”ฝ.

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

Euclidean(; field=โ„)

Generate the 1D Euclidean manifold for an โ„-, โ„‚-valued real- or complex-valued immutable values (in contrast to 1-element arrays from the constructor above).

source
Base.exp โ€” Method
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โกpX=p+X.\exp_p X = p + X.

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

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

logโกpq=qโˆ’p.\log_p q = q-p.

source
LinearAlgebra.norm โ€” Function
norm(M::Euclidean, p, X, r::Real=2)

Compute the norm of a tangent vector X at p on the Euclidean M, i.e. since every tangent space can be identified with M itself in this case, just the (Frobenius) norm of X. Specifying r, other norms are available as well

source
ManifoldsBase.Weingarten โ€” Method
Y = Weingarten(M::Euclidean, p, X, V)
Weingarten!(M::Euclidean, Y, p, X, V)

Compute the Weingarten map Wp\mathcal W_p at p on the Euclidean M with respect to the tangent vector XโˆˆTpMX \in T_p\mathcal M and the normal vector VโˆˆNpMV \in N_p\mathcal M.

Since this a flat space by itself, the result is always the zero tangent vector.

source
ManifoldsBase.distance โ€” Method
distance(M::Euclidean, p, q, r::Real=2)

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 tensor Frobenius norm, respectively. Specifying further an rโ‰ 2, other norms, like the 1-norm or the โˆž-norm can also be computed.

source
ManifoldsBase.embed โ€” Method
embed(M::Euclidean, p, X)

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

source
ManifoldsBase.inner โ€” Method
inner(M::Euclidean, p, X, Y)

Compute the inner product on the Euclidean M, which is just the inner product on the real-valued or complex valued vector space of arrays (or tensors) of size n1ร—n2ร—โ€ฆร—nin_1 ร— n_2 ร— โ€ฆ ร— n_i, i.e.

gp(X,Y)=โˆ‘kโˆˆIXโ€พkYk,g_p(X,Y) = \sum_{k โˆˆ I} \overline{X}_{k} Y_{k},

where II is the set of vectors kโˆˆNik โˆˆ โ„•^i, such that for all

iโ‰คjโ‰คii โ‰ค j โ‰ค i it holds 1โ‰คkjโ‰คnj1 โ‰ค k_j โ‰ค n_j and โ‹…โ€พ\overline{โ‹…} denotes the complex conjugate.

For the special case of iโ‰ค2i โ‰ค 2, i.e. matrices and vectors, this simplifies to

gp(X,Y)=trโก(XHY),g_p(X,Y) = \operatorname{tr}(X^{\mathrm{H}}Y),

where โ‹…Hโ‹…^{\mathrm{H}} denotes the Hermitian, i.e. complex conjugate transposed.

source
ManifoldsBase.project โ€” Method
project(M::Euclidean, p, X)

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

source
ManifoldsBase.riemann_tensor โ€” Method
riemann_tensor(M::Euclidean, p, X, Y, Z)

Compute the Riemann tensor R(X,Y)ZR(X,Y)Z at point p on Euclidean manifold M. Its value is always the zero tangent vector.

source
ManifoldsBase.vector_transport_to โ€” Method
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 Euclidean M, which simplifies to the identity.

source
ManifoldsBase.zero_vector โ€” Method
zero_vector(M::Euclidean, p)

Return the zero vector in the tangent space of p on the Euclidean M, which here is just a zero filled array the same size as p.

source