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.

source
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.

source
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.

source
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].

source
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$.

source
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$.

source
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.

source