Symmetric Positive Semidefinite Matrices of Fixed Rank
Manifolds.SymmetricPositiveSemidefiniteFixedRank โ TypeSymmetricPositiveSemidefiniteFixedRank{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 โ Methodexp(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 โ Methodlog(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 โ Methodisapprox(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 โ Methodcheck_point(M::SymmetricPositiveSemidefiniteFixedRank, q; kwargs...)Check whether q is a valid manifold point on the SymmetricPositiveSemidefiniteFixedRankM, 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 โ Methodcheck_vector(M::SymmetricPositiveSemidefiniteFixedRank, p, X; kwargs... )Check whether X is a tangent vector to manifold point p on the SymmetricPositiveSemidefiniteFixedRankM, 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 โ Methoddistance(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 โ Methodis_flat(::SymmetricPositiveSemidefiniteFixedRank)Return false. SymmetricPositiveSemidefiniteFixedRank is not a flat manifold. See Theorem A.18 in [MA20].
ManifoldsBase.manifold_dimension โ Methodmanifold_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 โ Methodvector_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.