Hyperrectangle
Hyperrectangle is a manifold with corners [Joy10], and also a subset of the real Euclidean manifold. It is useful for box-constrained optimization, for example it is implicitly used in the classic L-BFGS-B algorithm.
This is a manifold with corners. Some parts of its interface specific to this property are experimental and may change without a breaking release.
Manifolds.Hyperrectangle โ Type
Hyperrectangle{T} <: AbstractManifold{โ}Hyperrectangle, also known as orthotope or box. This is a manifold with corners [Joy10] with the standard Euclidean metric.
Constructor
Hyperrectangle(lb::AbstractArray, ub::AbstractArray)Generate the hyperrectangle of arrays such that each element of the array is between lower and upper bound with the same index.
sourceBase.exp โ Method
exp(M::Hyperrectangle, p, X)Compute the exponential map on the Hyperrectangle manifold M from p in direction X, which in this case is just
\[\exp_p X = p + X.\]
sourceBase.log โ Method
log(M::Hyperrectangle, p, q)Compute the logarithmic map on the Hyperrectangle M from p to q, which in this case is just
\[\log_p q = q-p.\]
sourceLinearAlgebra.norm โ Method
norm(M::Hyperrectangle, p, X)Compute the norm of a tangent vector X at p on the Hyperrectangle M, i.e. since every tangent space can be identified with M itself in this case, just the (Frobenius) norm of X.
Manifolds.manifold_volume โ Method
Manifolds.volume_density โ Method
volume_density(M::Hyperrectangle, p, X)Return volume density function of Hyperrectangle manifold M, i.e. 1.
ManifoldsBase.Weingarten โ Method
Y = Weingarten(M::Hyperrectangle, p, X, V)
Weingarten!(M::Hyperrectangle, Y, p, X, V)Compute the Weingarten map $\mathcal W_p$ at p on the Hyperrectangle 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.
sourceManifoldsBase.default_retraction_method โ Method
default_retraction_method(M::Hyperrectangle)Return ProjectionRetraction as the default retraction for the Hyperrectangle manifold.
ManifoldsBase.distance โ Method
distance(M::Hyperrectangle, p, q)Compute the euclidean distance between two points on the Hyperrectangle 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.
ManifoldsBase.embed โ Method
embed(M::Hyperrectangle, p, X)Embed the tangent vector X at point p in M. Equivalent to an identity map.
ManifoldsBase.embed โ Method
ManifoldsBase.injectivity_radius โ Method
injectivity_radius(M::Hyperrectangle, p)Return the injectivity radius on the Hyperrectangle M at point p, which is the distance to the nearest boundary the point is not on.
ManifoldsBase.inner โ Method
inner(M::Hyperrectangle, p, X, Y)Compute the inner product on the Hyperrectangle M, which is just the inner product on the real-valued vector space of arrays (or tensors) of size $n_1 ร n_2 ร โฆ ร n_i$, i.e.
\[g_p(X,Y) = \sum_{k โ I} 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$.
For the special case of $i โค 2$, i.e. matrices and vectors, this simplifies to
\[g_p(X,Y) = \operatorname{tr}(X^{\mathrm{T}}Y),\]
where $โ ^{\mathrm{T}}$ denotes transposition.
sourceManifoldsBase.is_flat โ Method
ManifoldsBase.manifold_dimension โ Method
manifold_dimension(M::Hyperrectangle)Return the manifold dimension of the Hyperrectangle M, i.e. the product of all array dimensions.
ManifoldsBase.parallel_transport_direction โ Method
parallel_transport_direction(M::Hyperrectangle, p, X, d)the parallel transport on Hyperrectangle is the identity, i.e. returns X.
ManifoldsBase.parallel_transport_to โ Method
parallel_transport_to(M::Hyperrectangle, p, X, q)the parallel transport on Hyperrectangle is the identity, i.e. returns X.
ManifoldsBase.project โ Method
project(M::Hyperrectangle, p, X)Project an arbitrary vector X into the tangent space of a point p on the Hyperrectangle M, which is just the identity, since any tangent space of M can be identified with all of M.
ManifoldsBase.project โ Method
project(M::Hyperrectangle, p)Project an arbitrary point p onto the Hyperrectangle manifold M, which is of course just the identity map.
ManifoldsBase.representation_size โ Method
representation_size(M::Hyperrectangle)Return the array dimensions required to represent an element on the Hyperrectangle M, i.e. the vector of all array dimensions.
ManifoldsBase.riemann_tensor โ Method
riemann_tensor(M::Hyperrectangle, p, X, Y, Z)Compute the Riemann tensor $R(X,Y)Z$ at point p on Hyperrectangle manifold M. Its value is always the zero tangent vector.
ManifoldsBase.sectional_curvature โ Method
sectional_curvature(::Hyperrectangle, p, X, Y)Sectional curvature of Hyperrectangle manifold M is 0.
ManifoldsBase.sectional_curvature_max โ Method
sectional_curvature_max(::Hyperrectangle)Sectional curvature of Hyperrectangle manifold M is 0.
ManifoldsBase.sectional_curvature_min โ Method
sectional_curvature_min(M::Hyperrectangle)Sectional curvature of Hyperrectangle manifold M is 0.
ManifoldsBase.vector_transport_to โ Method
vector_transport_to(M::Hyperrectangle, p, X, q, ::AbstractVectorTransportMethod)Transport the vector X from the tangent space at p to the tangent space at q on the Hyperrectangle M, which simplifies to the identity.
ManifoldsBase.zero_vector โ Method
zero_vector(M::Hyperrectangle, p)Return the zero vector in the tangent space of p on the Hyperrectangle M, which here is just a zero filled array the same size as p.
Literature
- [Joy10]
- D.ย Joyce. On manifolds with corners (2010), arXiv:0910.3518.