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
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.GrPoint — Type.GrPoint <: MPointA 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$.
Manopt.GrTVector — Type.GrTVector <: TVectorA tangent vector $\xi \in T_x\mathcal M$ on the manifold $\mathcal M = \mathrm{Gr}(k,n)$. The tangent space is given by as
Constructor
GrTVector(ξ)where ξ is an $n\times k$ Matrix that satisfies the above.
Manopt.Grassmannian — Type.Grassmannian <: ManifoldThe 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.
Functions
Base.exp — Method.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 tξ. Let $USV = t\xi$ denote the SVD decomposition of $t\xi$. Then we compute
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$.
Base.log — Method.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
where $U$ and $V$ are the unitary matrices and $S$ is a diagonal matrix containing the singular values of the SVD-decomposition of
and the $\operatorname{atan}$ is meant elementwise.
LinearAlgebra.dot — Method.dot(M,x,ξ,ν)compute the Riemannian inner product for two GrTVectors ξ and ν from $T_x\mathcal M$ of the Grassmannian manifold M given by
LinearAlgebra.norm — Method.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.
where $\xi_{ij}$ are the entries of the matrix ξ, i.e. the norm is given by the Frobenius norm of ξ.
Manopt.distance — Method.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
where
Manopt.injectivityRadius — Method.injectivityRadius(M)return the injectivity radius of the Grassmannian manifold M$= \mathrm{Gr}(k,n)$.
Manopt.inverseRetraction — Method.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
This function is implemented only for the case $\mathbb{K}=\mathbb{R}$. This is also the standard retraction.
Manopt.manifoldDimension — Method.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
and for $\mathbb{K}=\mathbb{C}$
Manopt.manifoldDimension — Method.manifoldDimension(M)return the dimension of the Grassmannian manifold M. The dimension for $\mathbb{K}=\mathbb{R}$ is defined by
and for $\mathbb{K}=\mathbb{C}$
Manopt.parallelTransport — Method.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
where $\operatorname{proj}_{\mathcal M}$ is the project onto the tangent space $T_y\mathcal M$.
Manopt.project — Method.project(M,x,v)project a matrix v orthogonally on the GrPoint x of the manifold Grassmannian manifold M. The formula reads
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
Manopt.randomMPoint — Method.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.
Manopt.randomTVector — Method.Manopt.retraction — Method.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
be the singular value decomposition, then the formula reads
Manopt.zeroTVector — Method.zeroTVector(M,x)return a zero tangent vector in the tangent space of the GrPoint on the Grassmannian manifold M.