# Symmetric Positive Semidefinite Matrices of Fixed Rank

Manifolds.SymmetricPositiveSemidefiniteFixedRankType
SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽} <: AbstractEmbeddedManifold{𝔽,DefaultIsometricEmbeddingType}

The Manifold $\operatorname{SPS}_k(n)$ consisting of the real- or complex-valued symmetric positive semidefinite matrices of size $n × n$ and rank $k$, i.e. the set

$$$\operatorname{SPS}_k(n) = \bigl\{ p ∈ 𝔽^{n × n}\ \big|\ p^{\mathrm{H}} = p, apa^{\mathrm{H}} \geq 0 \text{ for all } a ∈ 𝔽 \text{ and } \operatorname{rank}(p) = k\bigr\},$$$

where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transpose, and the field $𝔽 ∈ \{ ℝ, ℂ\}$. We sometimes $\operatorname{SPS}_{k,𝔽}(n)$, when distinguishing the real- and complex-valued manifold is important.

An element is represented by $q ∈ 𝔽^{n × k}$ from the factorization $p = qq^{\mathrm{H}}$. Note that since for any unitary (orthogonal) $A ∈ 𝔽^{n × n}$ we have $(Aq)(Aq)^{\mathrm{H}} = qq^{\mathrm{H}} = p$, the representation is not unique, or in other words, the manifold is a quotient manifold of $𝔽^{n × k}$.

The tangent space at $p$, $T_p\operatorname{SPS}_k(n)$, is also represented by matrices $Y ∈ 𝔽^{n × k}$ and reads as

$$$T_p\operatorname{SPS}_k(n) = \bigl\{ X ∈ 𝔽^{n × n}\,|\,X = qY^{\mathrm{H}} + Yq^{\mathrm{H}} \text{ i.e. } X = X^{\mathrm{H}} \bigr\}.$$$

Note that the metric used yields a non-complete manifold. The metric was used in[JourneeBachAbsilSepulchre2010][MassartAbsil2020].

Constructor

SymmetricPositiveSemidefiniteFixedRank(n::Int, k::Int, field::AbstractNumbers=ℝ)

Generate the manifold of $n × n$ symmetric positive semidefinite matrices of rank $k$ over the field of real numbers ℝ or complex numbers ℂ.

source
Base.expMethod
exp(M::SymmetricPositiveSemidefiniteFixedRank, q, Y)

Compute the exponential map on the SymmetricPositiveSemidefiniteFixedRank, which just reads

$$$\exp_q Y = q+Y.$$$
Note

Since the manifold is represented in the embedding and is a quotient manifold, the exponential and logarithmic map are a bijection only with respect to the equivalence classes. Computing

$$$q_2 = \exp_p(\log_pq)$$$

might yield a matrix $q_2\neq q$, but they represent the same point on the quotient manifold, i.e. $d_{\operatorname{SPS}_k(n)}(q_2,q) = 0$.

source
Base.isapproxMethod
isapprox(M::SymmetricPositiveSemidefiniteFixedRank, p, q; kwargs...)

test, whether two points p, q are (approximately) nearly the same. Since this is a quotient manifold in the embedding, the test is performed by checking their distance, if they are not the same, i.e. that $d_{\mathcal M}(p,q) \approx 0$, where the comparison is performed with the classical isapprox. The kwargs... are passed on to this accordingly.

source
Base.logMethod
log(M::SymmetricPositiveSemidefiniteFixedRank, q, p)

Compute the logarithmic map on the SymmetricPositiveSemidefiniteFixedRank manifold by minimizing $\lVert p - qY\rVert$ with respect to $Y$.

Note

Since the manifold is represented in the embedding and is a quotient manifold, the exponential and logarithmic map are a bijection only with respect to the equivalence classes. Computing

$$$q_2 = \exp_p(\log_pq)$$$

might yield a matrix $q_2\neq q$, but they represent the same point on the quotient manifold, i.e. $d_{\operatorname{SPS}_k(n)}(q_2,q) = 0$.

source
ManifoldsBase.check_manifold_pointMethod
check_manifold_point(M::SymmetricPositiveSemidefiniteFixedRank{n,𝔽}, q; kwargs...)

Check whether q is a valid manifold point on the SymmetricPositiveSemidefiniteFixedRank M, i.e. whether p=q*q' is a symmetric matrix of size (n,n) with values from the corresponding AbstractNumbers 𝔽. The symmetry of p is not explicitly checked since by using q p is symmetric by construction. The tolerance for the symmetry of p can and the rank of q*q' be set using kwargs....

source
ManifoldsBase.check_tangent_vectorMethod
check_tangent_vector(M::SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽}, p, X; check_base_point = true, kwargs... )

Check whether X is a tangent vector to manifold point p on the SymmetricPositiveSemidefiniteFixedRank M, i.e. X has to be a symmetric matrix of size (n,n) and its values have to be from the correct AbstractNumbers. The optional parameter check_base_point indicates, whether to call check_manifold_point for p. The tolerance for the symmetry of p and X can be set using kwargs....

source
ManifoldsBase.manifold_dimensionMethod
manifold_dimension(M::SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽})

Return the dimension of the SymmetricPositiveSemidefiniteFixedRank matrix M over the number system 𝔽, i.e.

\begin{aligned} \dim \operatorname{SPS}_{k,ℝ}(n) &= kn - \frac{k(k-1)}{2},\\ \dim \operatorname{SPS}_{k,ℂ}(n) &= 2kn - k^2, \end{aligned}

where the last $k^2$ is due to the zero imaginary part for Hermitian matrices diagonal

source
ManifoldsBase.vector_transport_toMethod
vector_transport_to(M::SymmetricPositiveSemidefiniteFixedRank, p, X, q)

transport the tangent vector X at p to q by projecting it onto the tangent space at q.

source