Matrices of determinant one
Manifolds.DeterminantOneMatrices โ Type
DeterminantOneMatrices{๐ฝ,T} <: AbstractDecoratorManifold{๐ฝ}The AbstractManifold consisting of the real- or complex-valued (invertible) matrices of 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=โ; parameter::Symbol=:type)Generate the manifold of $nรn$ matrices of determinant one.
Base.rand โ Method
Random.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. The point is drawn again while the absolute value of its determinant is below the square root of the machine epsilon of its entries.
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 โ Method
check_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 โ Method
check_vector(M::DeterminantOneMatrices{n,๐ฝ}, p, X; atol, rtol, 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.
The trace is compared to zero up to max(atol, rtol * norm(X)). The relative tolerance rtol refers to the size of X; its default is the one of isapprox.
ManifoldsBase.is_flat โ Method
is_flat(M::DeterminantOneMatrices)Return true for $n = 1$, where the DeterminantOneMatrices are a single point, and false otherwise, since they have nonzero sectional curvature for $n โฅ 2$.
ManifoldsBase.manifold_dimension โ Method
manifold_dimension(M::DeterminantOneMatrices{n,๐ฝ})Return the dimension of the DeterminantOneMatrices matrix M over the number system ๐ฝ. It is the dimension of its embedding, the Euclidean(n, n; field=๐ฝ), reduced by the real dimension of ๐ฝ, since $\det(p) = 1$ is a single equation over $๐ฝ$.
ManifoldsBase.project โ Method
project(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 โ Method
project(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.