The Stiefel Manifold mathrmSt(kn)

The Stiefel manifold $\mathrm{St}(k,n)$ embedded in $\mathbb K^{n\times k}$

The manifold $\mathcal M = \mathrm{St}(k,n)$ is an embedded submanifold of $\mathbb{K}^{n×k}$, which represents all orthonormal k-frames in $\mathbb{K}^{n}$. The set can be written as

\[\mathrm{St}(k,n) = \bigl\{ x \in \mathbb{K}^{n\times k} \big| {\bar x}^{\mathrm{T}}x = I_k \bigl\}\]

The Stiefel manifold $\mathrm{St}(k,n)$ can be thought of as a set of $n×k$ matrices by writing a $k$-frame as a matrix of $k$ column vectors in $\mathbb{K}^{n}$. It is named after the mathematician Eduard Stiefel (1909–1978). The Stiefel manifold $\mathcal M = \mathrm{St}(k,n)$ posesses the following instances of the abstract types Manifold, MPoint, and TVector.

Manopt.StPointType.
StPoint <: MPoint

A point $x$ on the manifold $\mathcal M = \mathrm{St}(k,n)$ is represented by an orthogonal matrix from $\mathbb{K}^{n\times k}.$

Constructor

StPoint(Matrix)

where Matrix is an orthogonal matrix of dimension $n×k$.

source
StTVector <: TVector

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

\[T_x\mathrm{St}(k,n) = \bigl\{\xi \in \mathbb{K}^{n\times k} \big| x^{\mathrm{T}}ξ+ξ^{\mathrm{T}}x=0 \bigr\}\]

.

Constructor

StTVector(ξ)

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

source
Manopt.StiefelType.
Stiefel{T<:Union{U, Complex{U}} <: Manifold

The manifold $\mathcal M = \mathrm{St}(k,n)$ represented by $n\times k$ orthogonal matrices, that are either real- or complex-valued.

Abbreviation

St

Constructor

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

generate the manifold $\mathrm{St}(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 Stiefel manifold M$= \mathrm{St}(k,n)$ with respect to the StPoint x and the StTVector ξ, which can be shortened with t to . The formula reads

\[\operatorname{exp}_{x} tξ = \begin{pmatrix} x\\t\xi \end{pmatrix} \operatorname{Exp} \left( \begin{pmatrix} {\bar x}^{\mathrm{T}}\xi & -{\bar \xi}^{\mathrm{T}}\xi\\ I_{k×k} & {\bar x}^{\mathrm{T}}\xi\end{pmatrix} \right) \begin{pmatrix} \operatorname{Exp}( -{\bar x}^{\mathrm{T}}\xi) \\ 0_{k×k}\end{pmatrix}\]

where $\operatorname{Exp}$ denotes matrix exponential, and $I_{k×k}$ and $0_{k×k} are the identity matrix and the zero matrix of dimension $k×k$, respectively.

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

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

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

compute the norm of the StTVector ξ in the tangent space $T_x\mathcal M$ at StPoint x of the Stiefel 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
injectivityRadius(M)

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

source
inverseRetractionPolar(M,x,y)

return a StTVector ξ of the tagent space $T_x\mathrm{SO}(n)$ of the StPoint x on the Stiefel manifold M with which the StPoint y can be reached by the retractionPolar after time 1. The formula reads

\[ξ = ys-x\]

where $s$ is the solution to the Lyapunov equation

\[x^{\mathrm{T}}ys + s(x^{\mathrm{T}}y)^{\mathrm{T}} + 2\mathrm{I}_k = 0.\]

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

source
inverseRetractionQR(M,x,y)

return a StTVector ξ of the tagent space $T_x\mathrm{SO}(n)$ of the StPoint x on the Stiefel manifold M with which the StPoint y can be reached by the retractionQR after time 1. 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 Stiefel manifold M$= \mathrm{St}(k,n)$, the StPoint x, itself embedded in $\mathbb R^{n\times k}$, belongs to. The dimension for $\mathbb{K}=\mathbb{R}$ is given by

\[nk - \frac{1}{2}k(k+1)\]

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

\[2nk - k^2.\]
source
manifoldDimension(M)

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

\[nk - \frac{1}{2}k(k+1)\]

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

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

compute the paralllel transport of the StTVector ξ from the tangent space $T_x\mathcal M$ at StPoint x to $T_y\mathcal M$ at StPoint y on the Stiefel 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,q)

project a Matrix q orthogonally on the tangent space of the StPoint x on the Stiefel manifold M. The formula reads

\[\operatorname{proj}_{\mathcal M}(x,q) = q-xB\]

where

\[B=\frac{1}{2} (x^{\mathrm{T}}{\bar q})^{\mathrm{T}} {\bar x}^{\mathrm{T}}q.\]

see also

parallelTransport, randomTVector

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

return a random (Gaussian) StPoint x on the manifold Stiefel manifold M by generating a (Gaussian) matrix with standard deviation σ and return the orthogonalized version, i.e. return ​​the Q component of the QR decomposition of the random matrix of size $n×k$.

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

return a random vector StTVector in the tangential space $T_x\mathrm{St}(k,n)$ by generating a random matrix of size $n×k$ and projecting it onto StPoint x with project.

source
retractionPolar(M,x,ξ,[t=1.0])

move the StPoint x in the direction of the StTVector ξ on the Stiefel manifold M. This SVD-based retraction is a second-order approximation of the exponential map exp. Let

\[USV = x + tξ\]

be the singular value decomposition, then the formula reads

\[\operatorname{retr}_x\xi = UV^\mathrm{T}.\]

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

source
retractionQR(M,x,ξ,[t=1.0])

move the StPoint x in the direction of the StTVector ξ on the Stiefel manifold M. This QR-based retraction is a first-order approximation of the exponential map exp. Let

\[QR = x + tξ\]

be the QR decomposition, then the formula reads

\[\operatorname{retr}_x\xi = QD\]

where D is a $n×k$ matrix with the signs of the diagonal entries of $R$ plus $0.5$ on the upper diagonal, i.e.

\[D_{ij}=\begin{cases} \operatorname{sgn}(R_{ij}+0,5) & \text{if} \; i=j \\ 0 & \, \text{otherwise} \end{cases}.\]

This is also the standard retraction.

source
validateMPoint(M,x)

validate that the StPoint x is a valid point on the Stiefel manifold M, i.e. that both dimensions and the rank are correct as well as that all columns are orthonormal.

source
validateMPoint(M,x,ξ)

validate that the StTVector ξ is a valid tangent vector to StPoint x on the Stiefel manifold M, i.e. that both dimensions agree and ${\bar x}^{\mathrm{T}}$ is skew symmetric.

source
Manopt.zeroTVectorMethod.
ξ = zeroTVector(M,x)

return a zero vector in the tangent space $T_x\mathcal M$ of the StPoint $x\in\mathrm{St}(k,n)$ on the Stiefel manifold M.

source