# Symmetric Positive Semidefinite Matrices of Fixed Rank

`Manifolds.SymmetricPositiveSemidefiniteFixedRank`

โ Type`SymmetricPositiveSemidefiniteFixedRank{T,๐ฝ} <: AbstractDecoratorManifold{๐ฝ}`

The `AbstractManifold`

$\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 $โ ^{\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 [JBAS10][MA20].

**Constructor**

`SymmetricPositiveSemidefiniteFixedRank(n::Int, k::Int, field::AbstractNumbers=โ; parameter::Symbol=:type)`

Generate the manifold of $nรn$ symmetric positive semidefinite matrices of rank $k$ over the `field`

of real numbers `โ`

or complex numbers `โ`

.

`Base.exp`

โ Method`exp(M::SymmetricPositiveSemidefiniteFixedRank, q, Y)`

Compute the exponential map on the `SymmetricPositiveSemidefiniteFixedRank`

, which just reads

\[ \exp_q Y = q+Y.\]

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

`Base.log`

โ Method`log(M::SymmetricPositiveSemidefiniteFixedRank, q, p)`

Compute the logarithmic map on the `SymmetricPositiveSemidefiniteFixedRank`

manifold by minimizing $\lVert p - qY\rVert$ with respect to $Y$.

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โ q$, but they represent the same point on the quotient manifold, i.e. $d_{\operatorname{SPS}_k(n)}(q_2,q) = 0$.

`ManifoldsBase._isapprox`

โ Method`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.

`ManifoldsBase.check_point`

โ Method`check_point(M::SymmetricPositiveSemidefiniteFixedRank, 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...`

.

`ManifoldsBase.check_vector`

โ Method`check_vector(M::SymmetricPositiveSemidefiniteFixedRank, p, X; 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`

.

Due to the reduced representation this is fulfilled as soon as the matrix is of correct size.

`ManifoldsBase.distance`

โ Method`distance(M::SymmetricPositiveSemidefiniteFixedRank, p, q)`

Compute the distance between two points `p`

, `q`

on the `SymmetricPositiveSemidefiniteFixedRank`

, which is the Frobenius norm of $Y$ which minimizes $\lVert p - qY\rVert$ with respect to $Y$.

`ManifoldsBase.is_flat`

โ Method`is_flat(::SymmetricPositiveSemidefiniteFixedRank)`

Return false. `SymmetricPositiveSemidefiniteFixedRank`

is not a flat manifold. See Theorem A.18 in [MA20].

`ManifoldsBase.manifold_dimension`

โ Method`manifold_dimension(M::SymmetricPositiveSemidefiniteFixedRank)`

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

`ManifoldsBase.vector_transport_to`

โ Method`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`

.

`ManifoldsBase.zero_vector`

โ Method` zero_vector(M::SymmetricPositiveSemidefiniteFixedRank, p)`

returns the zero tangent vector in the tangent space of the symmetric positive definite matrix `p`

on the `SymmetricPositiveSemidefiniteFixedRank`

manifold `M`

.