Fixed-rank matrices

Manifolds.FixedRankMatrices โ€” Type
FixedRankMatrices{m,n,k,๐”ฝ} <: Manifold{๐”ฝ}

The manifold of $m ร— n$ real-valued or complex-valued matrices of fixed rank $k$, i.e.

\[\bigl\{ p โˆˆ ๐”ฝ^{m ร— n}\ \big|\ \operatorname{rank}(p) = kย \bigr\},\]

where $๐”ฝ โˆˆ \{โ„,โ„‚\}$ and the rank is the number of linearly independent columns of a matrix.

Representation with 3 matrix factors

A point $p โˆˆ \mathcal M$ can be stored using unitary matrices $U โˆˆ ๐”ฝ^{m ร— k}$, $V โˆˆ ๐”ฝ^{n ร— k}$ as well as the $k$ singular values of $p = USV^\mathrm{H}$, where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transpose or Hermitian. In other words, $U$ and $V$ are from the manifolds Stiefel(m,k,๐”ฝ) and Stiefel(n,k,๐”ฝ), respectively; see SVDMPoint for details.

The tangent space $T_p \mathcal M$ at a point $p โˆˆ \mathcal M$ with $p=USV^\mathrm{H}$ is given by

\[T_p\mathcal M = \bigl\{ UMV^\mathrm{T} + U_pV^\mathrm{H} + UV_p^\mathrm{H} : M โˆˆ ๐”ฝ^{k ร— k}, U_p โˆˆ ๐”ฝ^{m ร— k}, V_p โˆˆ ๐”ฝ^{n ร— k} \text{ s.t. } U_p^\mathrm{H}U = 0_k, V_p^\mathrm{H}V = 0_k \bigr\},\]

where $0_k$ is the $k ร— k$ zero matrix. See UMVTVector for details.

The (default) metric of this manifold is obtained by restricting the metric on $โ„^{m ร— n}$ to the tangent bundle[Vandereycken2013].

Constructor

FixedRankMatrics(m, n, k[, field=โ„])

Generate the manifold of m-by-n (field-valued) matrices of rank k.

Manifolds.SVDMPoint โ€” Type
SVDMPoint <: MPoint

A point on a certain manifold, where the data is stored in a svd like fashion, i.e. in the form $USV^\mathrm{H}$, where this structure stores $U$, $S$ and $V^\mathrm{H}$. The storage might also be shortened to just $k$ singular values and accordingly shortened $U$ (columns) and $V^\mathrm{T}$ (rows).

Constructors

  • SVDMPoint(A) for a matrix A, stores its svd factors (i.e. implicitly $k=\min\{m,n\}$)
  • SVDMPoint(S) for an SVD object, stores its svd factors (i.e. implicitly $k=\min\{m,n\}$)
  • SVDMPoint(U,S,Vt) for the svd factors to initialize the SVDMPoint` (i.e. implicitly $k=\min\{m,n\}$)
  • SVDMPoint(A,k) for a matrix A, stores its svd factors shortened to the best rank $k$ approximation
  • SVDMPoint(S,k) for an SVD object, stores its svd factors shortened to the best rank $k$ approximation
  • SVDMPoint(U,S,Vt,k) for the svd factors to initialize the SVDMPoint, stores its svd factors shortened to the best rank $k$ approximation
Manifolds.UMVTVector โ€” Type
UMVTVector <: TVector

A tangent vector that can be described as a product $UMV^\mathrm{H}$, at least together with its base point, see for example FixedRankMatrices. This vector structure stores the additionally (to the point) required fields.

Constructors

  • UMVTVector(U,M,Vt) store umv factors to initialize the UMVTVector
  • UMVTVector(U,M,Vt,k) store the umv factors after shortening them down to inner dimensions $k$, i.e. in $UMV^\mathrm{H}$, where $M$ is a $k ร— k$ matrix.
ManifoldsBase.check_manifold_point โ€” Method
check_manifold_point(M::FixedRankMatrices{m,n,k}, p; kwargs...)

Check whether the matrix or SVDMPointx ids a valid point on the FixedRankMatrices{m,n,k,๐”ฝ}M, i.e. is an m-byn matrix of rank k. For the SVDMPoint the internal representation also has to have the right shape, i.e. p.U and p.Vt have to be unitary. The keyword arguments are passed to the rank function that verifies the rank of p.

ManifoldsBase.check_tangent_vector โ€” Method
check_tangent_vector(M:FixedRankMatrices{m,n,k}, p, X; check_base_point = true, kwargs...)

Check whether the tangent UMVTVectorX is from the tangent space of the SVDMPointp on the FixedRankMatricesM, i.e. that v.U and v.Vt are (columnwise) orthogonal to x.U and x.Vt, respectively, and its dimensions are consistent with p and X.M, i.e. correspond to m-by-n matrices of rank k. The optional parameter check_base_point indicates, whether to call check_manifold_point for p.

ManifoldsBase.inner โ€” Method
inner(M::FixedRankMatrices, p::SVDMPoint, X::UMVTVector, Y::UMVTVector)

Compute the inner product of X and Y in the tangent space of p on the FixedRankMatricesM, which is inherited from the embedding, i.e. can be computed using dot on the elements (U, Vt, M) of X and Y.

ManifoldsBase.manifold_dimension โ€” Method
manifold_dimension(M::FixedRankMatrices{m,n,k,๐”ฝ})

Return the manifold dimension for the ๐”ฝ-valued FixedRankMatricesM of dimension mxn of rank k, namely

\[\dim(\mathcal M) = k(m + n - k) \dim_โ„ ๐”ฝ,\]

where $\dim_โ„ ๐”ฝ$ is the real_dimension of ๐”ฝ.

ManifoldsBase.project โ€” Method
project(M, p, A)
project(M, p, X)

Project the matrix $A โˆˆ โ„^{m,n}$ or a UMVTVectorX from the embedding or another tangent space onto the tangent space at $p$ on the FixedRankMatricesM, further decomposing the result into $X=UMV$, i.e. a UMVTVector.

ManifoldsBase.retract โ€” Method
retract(M, p, X, ::PolarRetraction)

Compute an SVD-based retraction on the FixedRankMatricesM by computing

\[ q = U_kS_kV_k^\mathrm{H},\]

where $U_k S_k V_k^\mathrm{H}$ is the shortened singular value decomposition $USV=p+X$, in the sense that $S_k$ is the diagonal matrix of size $k ร— k$ with the $k$ largest singular values and $U$ and $V$ are shortened accordingly.

Literature