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 <: 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$.
Manopt.GrTVector
— Type.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
Constructor
GrTVector(ξ)
where ξ
is an $n\times k$ Matrix
that satisfies the above.
Manopt.Grassmannian
— Type.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.
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 GrTVector
s ξ
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 M
by 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 GrTVector
s 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
.