Matrices of determinant one
Manifolds.DeterminantOneMatrices โ TypeDeterminantOneMatrices{๐ฝ,T} <: AbstractDecoratorManifold{๐ฝ}The AbstractManifold consisting of the real- or complex-valued (invertible) matrices od determinant one, that is the set
\[\bigl\{p โ ๐ฝ^{nรn}\ \big|\ \det(p) = 1 \bigr\},\]
where the field $๐ฝ โ \{ โ, โ\}$.
Note that this is a subset of InvertibleMatrices, and a superset of any of the GeneralUnitaryMatrices
The tangent space at any point p is the set of matrices with trace 0.
Constructor
DeterminantOneMatrices(n::Int, field::AbstractNumbers=โ)Generate the manifold of $nรn$ matrices of determinant one.
Base.rand โ MethodRandom.rand(M::DeterminantOneMatrices; vector_at=nothing, kwargs...)If vector_at is nothing, return a random point on the DeterminantOneMatrices manifold M by using rand in the embedding.
If vector_at is not nothing, return a random tangent vector from the tangent space of the point vector_at on the DeterminantOneMatrices by using by using rand in the embedding.
ManifoldsBase.check_point โ Methodcheck_point(M::DeterminantOneMatrices{n,๐ฝ}, p; kwargs...)Check whether p is a valid manifold point on the DeterminantOneMatrices M, i.e. whether p has a determinant of $1$.
The check is performed with isapprox and all keyword arguments are passed to this
ManifoldsBase.check_vector โ Methodcheck_vector(M::DeterminantOneMatrices{n,๐ฝ}, p, X; kwargs... )Check whether X is a tangent vector to manifold point p on the DeterminantOneMatrices M, which are all matrices of size $nรn$ with trace 0.
ManifoldsBase.manifold_dimension โ Methodmanifold_dimension(M::DeterminantOneMatrices{n,๐ฝ})Return the dimension of the DeterminantOneMatrices matrix M over the number system ๐ฝ, which is one dimension less than its embedding, the Euclidean(n, n; field=๐ฝ).
ManifoldsBase.project โ Methodproject(G::DeterminantOneMatrices, p, X)
project!(G::DeterminantOneMatrices, Y, p, X)Orthogonally project $X โ ๐ฝ^{nรn}$ onto the tangent space of $p$ to the DeterminantOneMatrices.
This first changes the representation from X to the trace-zero component, i.e. computes Y = p \ X and then subtracts c = tr(Y) / n from all diagonal entries.
ManifoldsBase.project โ Methodproject(G::DeterminantOneMatrices, p)
project!(G::DeterminantOneMatrices, q, p)Project $p โ \mathrm{GL}(n, ๐ฝ)$ to the DeterminantOneMatrices using the singular value decomposition of $p = U S V^\mathrm{H}$.
The formula for the projection is
\[\operatorname{proj}(p) = U S D V^\mathrm{H},\]
where
\[D_{ij} = ฮด_{ij} \begin{cases} 1 & \text{ if } i โ n \\ \det(p)^{-1} & \text{ if } i = n \end{cases}.\]
The operation can be done in-place of q.