Symmetric positive definite matrices of fixed determinant
Manifolds.SPDFixedDeterminant โ Type
SPDFixedDeterminant{T,D} <: AbstractDecoratorManifold{โ}The manifold of symmetric positive definite matrices of fixed determinant $d > 0$, i.e.
\[\mathcal P_d(n) = \bigl\{ p โ โ^{nรn} \ \big|\ a^\mathrm{T}pa > 0 \text{ for all } a โ โ^{n}\backslash\{0\} \text{ and } \det(p) = d \bigr\}.\]
This manifold is modelled as a submanifold of SymmetricPositiveDefinite(n), see EmbeddedSubmanifoldType for the implications, but for example retractions and inverse retractions are all available
These matrices are sometimes also called isochoric, which refers to the interpretation of the matrix representing an ellipsoid. All ellipsoids that represent points on this manifold have the same volume.
The tangent space is modelled the same as for SymmetricPositiveDefinite(n) and consists of all symmetric matrices $X$ whose product with $p^{-1}$ has zero trace
\[ T_p\mathcal P_d(n) = \bigl\{ X \in \mathbb R^{nรn} \big|\ X=X^\mathrm{T} \text{ and } \operatorname{tr}(p^{-1}X) = 0 \bigr\},\]
since for a constant determinant we require that $0 = D\det(p)[X] = \det(p)\operatorname{tr}(p^{-1}X)$ for all tangent vectors $X$. At the identity matrix this is the set of symmetric matrices of zero trace.
Constructor
SPDFixedDeterminant(n::Int, d::Real=1.0; parameter::Symbol=:type)Generate the manifold $\mathcal P_d(n) \subset \mathcal P(n)$ of determinant $d$, which defaults to 1.0.
parameter: whether a type parameter should be used to store n. By default size is stored in type. Value can either be :field or :type.
This manifold is a submanifold of the symmetric positive definite matrices and hence inherits most properties therefrom.
The differences are the functions
ManifoldsBase.check_point โ Method
check_point(M::SPDFixedDeterminant, p; kwargs...)Check whether p is a valid manifold point on the SPDFixedDeterminant(n,d) M, i.e. whether p is a SymmetricPositiveDefinite matrix of size (n, n)
with determinant $\det(p) =$M.d.
The tolerance for the determinant of p can be set using kwargs....
ManifoldsBase.check_vector โ Method
check_vector(M::SPDFixedDeterminant, p, X; atol, rtol, kwargs... )Check whether X is a tangent vector to manifold point p on the SPDFixedDeterminant M. X has to be a tangent vector on SymmetricPositiveDefinite, so a symmetric matrix, and additionally fulfill $\operatorname{tr}(p^{-1}X) = 0$ up to max(atol, rtol * sqrt(n) * norm(M, p, X)). The relative tolerance rtol refers to the size of X; its default is the one of isapprox.
ManifoldsBase.project โ Method
Y = project(M::SPDFixedDeterminant, p, X)
project!(M::SPDFixedDeterminant, Y, p, X)Project the symmetric matrix X onto the tangent space at p of the (sub-)manifold of s.p.d. matrices of determinant M.d (in place of Y). This subtracts the multiple of p that makes the trace of $p^{-1}X$ vanish.
ManifoldsBase.project โ Method
q = project(M::SPDFixedDeterminant, p)
project!(M::SPDFixedDeterminant, q, p)Project the symmetric positive definite (s.p.d.) matrix p from the embedding onto the (sub-)manifold of s.p.d. matrices of determinant M.d (in place of q).
The formula reads
\[q = \Bigl(\frac{d}{\det(p)}\Bigr)^{\frac{1}{n}}p\]
Random.rand! โ Method
rand(M::SPDFixedDeterminant; vector_at=nothing, ฯ::Real=1.0)
rand!(rng::AbstractRNG, M::SPDFixedDeterminant, pX; vector_at=nothing, ฯ::Real=1.0)Draw a random point, or a random tangent vector at vector_at, on the SymmetricPositiveDefinite matrices and project it onto M.