Generalized Stiefel
Manifolds.GeneralizedStiefel
โ TypeGeneralizedStiefel{T,๐ฝ,B} <: AbstractDecoratorManifold{๐ฝ}
The Generalized Stiefel manifold consists of all $nรk$, $n\geq k$ orthonormal matrices w.r.t. an arbitrary scalar product with symmetric positive definite matrix $B\in R^{nรn}$, i.e.
\[\operatorname{St}(n,k,B) = \bigl\{ p \in \mathbb F^{nรk}\ \big|\ p^{\mathrm{H}} B p = I_k \bigr\},\]
where $๐ฝ โ \{โ, โ\}$, $โ ^{\mathrm{H}}$ denotes the complex conjugate transpose or Hermitian, and $I_k \in \mathbb R^{kรk}$ denotes the $kรk$ identity matrix.
In the case $B=I_k$ one gets the usual Stiefel
manifold.
The tangent space at a point $p\in\mathcal M=\operatorname{St}(n,k,B)$ is given by
\[T_p\mathcal M = \{ X \in ๐ฝ^{nรk} : p^{\mathrm{H}}BX + X^{\mathrm{H}}Bp=0_n\},\]
where $0_k$ is the $kรk$ zero matrix.
This manifold is modeled as an embedded manifold to the Euclidean
, i.e. several functions like the zero_vector
are inherited from the embedding.
The manifold is named after Eduard L. Stiefel (1909โ1978).
Constructor
GeneralizedStiefel(n, k, B=I_n, F=โ)
Generate the (real-valued) Generalized Stiefel manifold of $nรk$ dimensional orthonormal matrices with scalar product B
.
Base.rand
โ Methodrand(::GeneralizedStiefel; vector_at=nothing, ฯ::Real=1.0)
When vector_at
is nothing
, return a random (Gaussian) point p
on the GeneralizedStiefel
manifold M
by generating a (Gaussian) matrix with standard deviation ฯ
and return the (generalized) orthogonalized version, i.e. return the projection onto the manifold of the Q component of the QR decomposition of the random matrix of size $nรk$.
When vector_at
is not nothing
, return a (Gaussian) random vector from the tangent space $T_{vector\_at}\mathrm{St}(n,k)$ with mean zero and standard deviation ฯ
by projecting a random Matrix onto the tangent vector at vector_at
.
ManifoldsBase.check_point
โ Methodcheck_point(M::GeneralizedStiefel, p; kwargs...)
Check whether p
is a valid point on the GeneralizedStiefel
M
=$\operatorname{St}(n,k,B)$, i.e. that it has the right AbstractNumbers
type and $x^{\mathrm{H}}Bx$ is (approximately) the identity, where $โ
^{\mathrm{H}}$ is the complex conjugate transpose. The settings for approximately can be set with kwargs...
.
ManifoldsBase.check_vector
โ Methodcheck_vector(M::GeneralizedStiefel, p, X; kwargs...)
Check whether X
is a valid tangent vector at p
on the GeneralizedStiefel
M
=$\operatorname{St}(n,k,B)$, i.e. the AbstractNumbers
fits, p
is a valid point on M
and it (approximately) holds that $p^{\mathrm{H}}BX + \overline{X^{\mathrm{H}}Bp} = 0$, where kwargs...
is passed to the isapprox
.
ManifoldsBase.inner
โ Methodinner(M::GeneralizedStiefel, p, X, Y)
Compute the inner product for two tangent vectors X
, Y
from the tangent space of p
on the GeneralizedStiefel
manifold M
. The formula reads
\[(X, Y)_p = \operatorname{trace}(v^{\mathrm{H}}Bw),\]
i.e. the metric induced by the scalar product B
from the embedding, restricted to the tangent space.
ManifoldsBase.is_flat
โ Methodis_flat(M::GeneralizedStiefel)
Return true if GeneralizedStiefel
M
is one-dimensional.
ManifoldsBase.manifold_dimension
โ Methodmanifold_dimension(M::GeneralizedStiefel)
Return the dimension of the GeneralizedStiefel
manifold M
=$\operatorname{St}(n,k,B,๐ฝ)$. The dimension is given by
\[\begin{aligned} \dim \mathrm{St}(n, k, B, โ) &= nk - \frac{1}{2}k(k+1) \\ \dim \mathrm{St}(n, k, B, โ) &= 2nk - k^2\\ \dim \mathrm{St}(n, k, B, โ) &= 4nk - k(2k-1) \end{aligned}\]
ManifoldsBase.project
โ Methodproject(M:GeneralizedStiefel, p, X)
Project X
onto the tangent space of p
to the GeneralizedStiefel
manifold M
. The formula reads
\[\operatorname{proj}_{\operatorname{St}(n,k)}(p,X) = X - p\operatorname{Sym}(p^{\mathrm{H}}BX),\]
where $\operatorname{Sym}(y)$ is the symmetrization of $y$, e.g. by $\operatorname{Sym}(y) = \frac{y^{\mathrm{H}}+y}{2}$.
ManifoldsBase.project
โ Methodproject(M::GeneralizedStiefel, p)
Project p
from the embedding onto the GeneralizedStiefel
M
, i.e. compute q
as the polar decomposition of $p$ such that $q^{\mathrm{H}}Bq$ is the identity, where $โ
^{\mathrm{H}}$ denotes the hermitian, i.e. complex conjugate transposed.
ManifoldsBase.retract
โ Methodretract(M::GeneralizedStiefel, p, X)
retract(M::GeneralizedStiefel, p, X, ::PolarRetraction)
retract(M::GeneralizedStiefel, p, X, ::ProjectionRetraction)
Compute the SVD-based retraction PolarRetraction
on the GeneralizedStiefel
manifold M
, which in this case is the same as the projection based retraction employing the exponential map in the embedding and projecting the result back to the manifold.
The default retraction for this manifold is the ProjectionRetraction
.