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รn}$ you can simply type M = โ^n or โ^(n,n), respectively.
Manifolds.Euclidean โ TypeEuclidean{T,๐ฝ} <: AbstractManifold{๐ฝ}Euclidean vector space.
Constructor
Euclidean(n)Generate the $n$-dimensional vector space $โ^n$.
Euclidean(nโ,nโ,...,nแตข; field=โ, parameter::Symbol = :field)
๐ฝ^(nโ,nโ,...,nแตข) = Euclidean(nโ,nโ,...,nแตข; field=๐ฝ)Generate the vector space of $k = n_1 โ
n_2 โ
โฆ โ
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 $๐ฝ$.
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).
Base.exp โ Methodexp(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.log โ Methodlog(M::Euclidean, p, q)Compute the logarithmic map on the Euclidean M from p to q, which in this case is just
\[\log_p q = q-p.\]
LinearAlgebra.norm โ Functionnorm(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
Manifolds.manifold_volume โ Methodmanifold_volume(::Euclidean)Return volume of the Euclidean manifold, i.e. infinity.
Manifolds.volume_density โ Methodvolume_density(M::Euclidean, p, X)Return volume density function of Euclidean manifold M, i.e. 1.
ManifoldsBase.Weingarten โ MethodY = Weingarten(M::Euclidean, p, X, V)
Weingarten!(M::Euclidean, Y, p, X, V)Compute the Weingarten map $\mathcal W_p$ at p on the Euclidean M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.
Since this a flat space by itself, the result is always the zero tangent vector.
ManifoldsBase.distance โ Methoddistance(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.
ManifoldsBase.embed โ Methodembed(M::Euclidean, p, X)Embed the tangent vector X at point p in M. Equivalent to an identity map.
ManifoldsBase.embed โ Methodembed(M::Euclidean, p)Embed the point p in M. Equivalent to an identity map.
ManifoldsBase.injectivity_radius โ Methodinjectivity_radius(M::Euclidean)Return the injectivity radius on the Euclidean M, which is $โ$.
ManifoldsBase.inner โ Methodinner(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 $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
$i โค j โค i$ it holds $1 โค k_j โค n_j$ and $\overline{โ }$ denotes the complex conjugate.
For the special case of $i โค 2$, i.e. matrices and vectors, this simplifies to
\[g_p(X,Y) = \operatorname{tr}(X^{\mathrm{H}}Y),\]
where $โ ^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.
ManifoldsBase.is_flat โ Methodis_flat(::Euclidean)Return true. Euclidean is a flat manifold.
ManifoldsBase.manifold_dimension โ Methodmanifold_dimension(M::Euclidean)Return the manifold dimension of the Euclidean M, i.e. the product of all array dimensions and the real_dimension of the underlying number system.
ManifoldsBase.parallel_transport_direction โ Methodparallel_transport_direction(M::Euclidean, p, X, d)the parallel transport on Euclidean is the identity, i.e. returns X.
ManifoldsBase.parallel_transport_to โ Methodparallel_transport_to(M::Euclidean, p, X, q)the parallel transport on Euclidean is the identity, i.e. returns X.
ManifoldsBase.project โ Methodproject(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.
ManifoldsBase.project โ Methodproject(M::Euclidean, p)Project an arbitrary point p onto the Euclidean manifold M, which is of course just the identity map.
ManifoldsBase.representation_size โ Methodrepresentation_size(M::Euclidean)Return the array dimensions required to represent an element on the Euclidean M, i.e. the vector of all array dimensions.
ManifoldsBase.riemann_tensor โ Methodriemann_tensor(M::Euclidean, p, X, Y, Z)Compute the Riemann tensor $R(X,Y)Z$ at point p on Euclidean manifold M. Its value is always the zero tangent vector.
ManifoldsBase.sectional_curvature โ Methodsectional_curvature(::Euclidean, p, X, Y)Sectional curvature of Euclidean manifold M is 0.
ManifoldsBase.sectional_curvature_max โ Methodsectional_curvature_max(::Euclidean)Sectional curvature of Euclidean manifold M is 0.
ManifoldsBase.sectional_curvature_min โ Methodsectional_curvature_min(M::Euclidean)Sectional curvature of Euclidean manifold M is 0.
ManifoldsBase.vector_transport_to โ Methodvector_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.
ManifoldsBase.zero_vector โ Methodzero_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.