Centered matrices
Manifolds.CenteredMatrices โ Type
CenteredMatrices{๐ฝ,T} <: AbstractDecoratorManifold{๐ฝ}The manifold of $mรn$ real-valued or complex-valued matrices whose columns sum to zero, i.e.
\[\bigl\{ p โ ๐ฝ^{mรn}\ \big|\ [1 โฆ 1] * p = [0 โฆ 0] \bigr\},\]
where $๐ฝ โ \{โ,โ\}$.
Constructor
CenteredMatrices(m, n[, field=โ]; parameter::Symbol=:type)Generate the manifold of m-by-n (field-valued) matrices whose columns sum to zero.
parameter: whether a type parameter should be used to store m and n. By default size is stored in type. Value can either be :field or :type.
ManifoldsBase.Weingarten โ Method
Y = Weingarten(M::CenteredMatrices, p, X, V)
Weingarten!(M::CenteredMatrices, Y, p, X, V)Compute the Weingarten map $\mathcal W_p$ at p on the CenteredMatrices 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.check_point โ Method
check_point(M::CenteredMatrices, p; kwargs...)Check whether the matrix is a valid point on the CenteredMatrices M, i.e. is an m-by-n matrix whose columns sum to zero.
The norm of the column sums of p has to be at most atol, or at most rtol * sqrt(m) * norm(p) if this scale is finite. The relative tolerance rtol refers to the size of p; its default is the one of isapprox.
ManifoldsBase.check_vector โ Method
check_vector(M::CenteredMatrices, p, X; kwargs... )Check whether X is a tangent vector to manifold point p on the CenteredMatrices M, i.e. that X is a matrix of size (m, n) whose columns sum to zero and its values are from the correct AbstractNumbers. The column sums of X have to vanish up to max(atol, rtol * sqrt(m) * norm(X)). The relative tolerance rtol refers to the size of X; its default is the one of isapprox.
ManifoldsBase.get_coordinates โ Method
get_coordinates(M::CenteredMatrices, p, X, ::DefaultOrthonormalBasis{โ})Compute the coordinates of $HX$ in the Euclidean space of $(m-1)รn$ matrices, where $H$ is the $(m-1)รm$ Helmert submatrix, see [Gen17, Section 8.8.1].
ManifoldsBase.get_vector โ Method
get_vector(M::CenteredMatrices, p, c, ::DefaultOrthonormalBasis{โ})Compute $X = H^{\mathrm{T}}Z$, where $Z$ is the $(m-1)รn$ matrix with the coordinates c in the Euclidean space and $H$ is the $(m-1)รm$ Helmert submatrix, see [Gen17, Section 8.8.1].
ManifoldsBase.is_flat โ Method
is_flat(::CenteredMatrices)Return true. CenteredMatrices is a flat manifold.
ManifoldsBase.manifold_dimension โ Method
manifold_dimension(M::CenteredMatrices)Return the manifold dimension of the CenteredMatrices m-by-n matrix M over the number system ๐ฝ, i.e.
\[\dim(\mathcal M) = (m*n - n) \dim_โ ๐ฝ,\]
where $\dim_โ ๐ฝ$ is the real_dimension of ๐ฝ.
ManifoldsBase.project โ Method
project(M::CenteredMatrices, p, X)Project the matrix X onto the tangent space at p on the CenteredMatrices M, i.e.
\[\operatorname{proj}_p(X) = X - \begin{bmatrix} 1\\ โฎ\\ 1 \end{bmatrix} * [c_1 \dots c_n],\]
where $c_i = \frac{1}{m}\sum_{j=1}^m x_{j,i}$ for $i = 1, \dots, n$.
ManifoldsBase.project โ Method
project(M::CenteredMatrices, p)Projects p from the embedding onto the CenteredMatrices M, i.e.
\[\operatorname{proj}_{\mathcal M}(p) = p - \begin{bmatrix} 1\\ โฎ\\ 1 \end{bmatrix} * [c_1 \dots c_n],\]
where $c_i = \frac{1}{m}\sum_{j=1}^m p_{j,i}$ for $i = 1, \dots, n$.
ManifoldsBase.riemann_tensor โ Method
riemann_tensor(M::CenteredMatrices, p, X, Y, Z)Compute the Riemann tensor $R(X,Y)Z$ at point p on CenteredMatrices M. Its value is always the zero tangent vector.
ManifoldsBase.sectional_curvature โ Method
sectional_curvature(M::CenteredMatrices, p, X, Y)Sectional curvature of CenteredMatrices M is 0.
ManifoldsBase.sectional_curvature_max โ Method
sectional_curvature_max(M::CenteredMatrices)Return the upper bound 0 of the sectional curvature of CenteredMatrices M, which is flat.
ManifoldsBase.sectional_curvature_min โ Method
sectional_curvature_min(M::CenteredMatrices)Return the lower bound 0 of the sectional curvature of CenteredMatrices M, which is flat.
Random.rand! โ Method
rand(M::CenteredMatrices; vector_at=nothing, ฯ::Real=1.0)
rand!(rng::AbstractRNG, M::CenteredMatrices, pX; vector_at=nothing, ฯ::Real=1.0)Project a matrix of independent normally distributed entries with standard deviation ฯ onto M, which yields a random point as well as a random tangent vector at vector_at.