The Grassmannian Manifold mathrmGr(kn)

The Grassmannian manifold $\mathrm{Gr}(k,n)$ embedded in $\mathbb R^{n\times k}$

The manifold $\mathcal M = \mathrm{Gr}(k,n)$ of the set of k-dimensional subspaces in $\mathbb{K}^{n}$. This set can be written as

\[\mathrm{Gr}(k,n) = \bigl\{ \operatorname{span}(x) \ \big|\ x \in \mathbb{K}^{n\times k}, {\bar x}^{\mathrm{T}}x = \mathrm{I}_k \bigr\}.\]

Here we consider the vector spaces $\mathbb{K}^{k}$, where $\mathbb{K}$ is equal to $\mathbb{C}$ or $\mathbb{R}$, which are subspaces of $\mathbb{K}^{n}$ with $n\geq k$. Thus all the manifolds produced are compact and smooth. The manifold is named after Hermann Günther Graßmann (1809-1877). The Grassmannian manifold $\mathcal M = \mathrm{Gr}(k,n)$ possesses the following instances of the abstract types Manifold, MPoint, and TVector.

Manopt.GrPointType.
GrPoint <: MPoint

A point $x$ on the manifold $\mathcal M = \mathrm{Gr}(k,n)$ is an orthonormal matrix of size $ n×k$. The matrix is a numerical representation of the vector subspace its columns span.

Constructor

GrPoint(p)

where p::Matrix is an orthonormal matrix of dimension $n×k$.

source
GrTVector <: TVector

A tangent vector $\xi \in T_x\mathcal M$ on the manifold $\mathcal M = \mathrm{Gr}(k,n)$. The tangent space is given by as

\[T_x\mathrm{Gr}(k,n) = \bigl\{ \xi \in \mathbb{K}^{n\times k} \ \big| \ {\bar ξ}^\mathrm{T}x = {\bar x}^\mathrm{T}ξ = 0_{k×k} \bigr\}.\]

Constructor

GrTVector(ξ)

where ξ is an $n\times k$ Matrix that satisfies the above.

source
Grassmannian <: Manifold

The manifold $\mathcal M = \mathrm{Gr}(k,n)$ of the set of k-dimensional subspaces in $\mathbb{K}^{n}$ represented by $n\times k$ orthonormal matrices, that are either real- or complex-valued.

Abbreviation

Gr

Constructor

Grassmannian(k, n[, d=Float64])

generates the manifold $\mathrm{Gr}(k,n)$ where the integer n is the number of rows and k is the number of columns of the matrices and the optional parameter d sets the DataType of the matrix entries.

source

Functions

Base.expMethod.
exp(M,x,ξ,[t=1.0])

compute the exponential map on the Grassmannian manifold M$= \mathrm{Gr}(k,n)$ with respect to the GrPoint x and the GrTVector ξ, which can be shortened with t to . Let $USV = t\xi$ denote the SVD decomposition of $t\xi$. Then we compute

\[A = x\cdot V\cdot \cos(S)\cdot {\bar V}^\mathrm{T} + U \cdot \sin(S) \cdot {\bar V}^\mathrm{T},\]

where cosine and sine are applied element wise to the diagonal entries of $S$. The resulting point $y$ of the exponential map is then the matrix $Q$ of the QR decomposition $A=QR$ of $A$.

source
Base.logMethod.
log(M,x,y)

compute the logarithmic map on the Grassmannian manifold $\mathcal M=\mathrm{Gr}(k,n)$, i.e. the GrTVector whose corresponding geodesic starting from GrPoint x reaches the GrPoint y after time 1 on the Grassmannian manifold M. The formula reads

\[\log_x y = V\cdot \operatorname{atan}(S) \cdot {\bar U}^\mathrm{T}\]

where $U$ and $V$ are the unitary matrices and $S$ is a diagonal matrix containing the singular values of the SVD-decomposition of

\[USV = ({\bar y}^\mathrm{T}x)^{-1} ( {\bar y}^\mathrm{T} - {\bar y}^\mathrm{T}x{\bar x}^\mathrm{T} )\]

and the $\operatorname{atan}$ is meant elementwise.

source
LinearAlgebra.dotMethod.
dot(M,x,ξ,ν)

compute the Riemannian inner product for two GrTVectors ξ and ν from $T_x\mathcal M$ of the Grassmannian manifold M given by

\[\langle \xi, \nu \rangle_x = \operatorname{Re}(\operatorname{tr}(\xi^{\mathrm{T}} ν)),\]
source
LinearAlgebra.normMethod.
norm(M,x,ξ)

compute the norm of the GrTVector ξ in the tangent space $T_x\mathcal M$ at GrPoint x of the Grassmannian manifold M.

\[\lVert \xi \rVert_x = \sqrt{\sum_{i,j=0}^n \xi_{ij}^2}\]

where $\xi_{ij}$ are the entries of the matrix ξ, i.e. the norm is given by the Frobenius norm of ξ.

source
Manopt.distanceMethod.
distance(M,x,y)

compute the Riemannian distance on Grassmannian manifold M$= \mathrm{Gr}(k,n)$ embedded in $\mathbb R$. Let $USV = {\bar x}^\mathrm{T}y$ denote the SVD decomposition of $x'y$. Then we compute

\[d_{\mathrm{GR}(k,n)}(x,y) = \operatorname{norm}(\operatorname{Re}(b))\]

where

\[b_{i}=\begin{cases} 0 & \text{if} \; S_i≧1 \\ \operatorname{acos}(S_i) & \, \text{if} \; S_i<1 \end{cases}.\]
source
injectivityRadius(M)

return the injectivity radius of the Grassmannian manifold M$= \mathrm{Gr}(k,n)$.

source
inverseRetraction(M,x,y)

return a GrTVector ξ of the tagent space $T_x\mathrm{Gr}(k,n)$ with which the GrPoint y can be reached on the Grassmannian manifold Mby the retraction from the GrPoint x after time 1. The formula reads

\[\xi = y \cdot (x^{\mathrm{T}}y)^{-1} - x\]

This function is implemented only for the case $\mathbb{K}=\mathbb{R}$. This is also the standard retraction.

source
manifoldDimension(x)

return the dimension of the Grassmannian manifold M$= \mathrm{Gr}(k,n)$, the GrPoint x, itself embedded in $\mathbb{K}^{n\times k}$, belongs to. The dimension for $\mathbb{K}=\mathbb{R}$ is defined by

\[k(n-k)\]

and for $\mathbb{K}=\mathbb{C}$

\[2k \cdot (n-k).\]
source
manifoldDimension(M)

return the dimension of the Grassmannian manifold M. The dimension for $\mathbb{K}=\mathbb{R}$ is defined by

\[k(n-k)\]

and for $\mathbb{K}=\mathbb{C}$

\[2k \cdot (n-k).\]
source
parallelTransport(M,x,y,ξ)

compute the paralllel transport of the GrTVector ξ from the tangent space $T_x\mathcal M$ at GrPoint x to $T_y\mathcal M$ at GrPoint y on the Grassmannian manifold M provided that the corresponding geodesic $g(\cdot;x,y)$ is unique. The formula reads

\[P_{x\to y}(\xi) = \operatorname{proj}_{\mathcal M}(y,\xi).\]

where $\operatorname{proj}_{\mathcal M}$ is the project onto the tangent space $T_y\mathcal M$.

source
Manopt.projectMethod.
project(M,x,v)

project a matrix v orthogonally on the GrPoint x of the manifold Grassmannian manifold M. The formula reads

\[\operatorname{proj}_{\mathcal M}(x,v) = v-x({\bar x}^\mathrm{T}v),\]

i.e. the difference matrix of the image and the output matrix lies in the orthogonal complement of all GrTVectors from the tangent space $T_x\mathcal M$ at GrPoint x.

see also

parallelTransport, randomTVector

source
randomMPoint(M [,type=:Gaussian, σ=1.0])

return a random GrPoint x on Grassmannian manifold M by generating a random (Gaussian) matrix with standard deviation σ in matching size, which is orthonormal.

source
randomTVector(M,x [,type=:Gaussian, σ=1.0])

return a (Gaussian) random vector GrTVector in the tangential space $T_x\mathrm{Gr}(k,n)$ with mean zero and standard deviation σ by projecting a random Matrix onto the GrPoint x with project.

source
Manopt.retractionMethod.
retraction(M,x,ξ,[t=1.0])

move the GrPoint x in the direction of the GrTVector ξ on the Grassmannian manifold M. This SVD-based retraction is an approximation of the exponential map exp. Let

\[USV = x + tξ\]

be the singular value decomposition, then the formula reads

\[\operatorname{retr}_x\xi = U{\bar V}^\mathrm{T}.\]
source
Manopt.zeroTVectorMethod.
zeroTVector(M,x)

return a zero tangent vector in the tangent space of the GrPoint on the Grassmannian manifold M.

source