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_along
โ Methodparallel_transport_along(M::Euclidean, p, X, c)
the parallel transport on Euclidean
is the identity, i.e. returns X
.
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
.