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 IsEmbeddedSubmanifold 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 with zero trace

\[ T_p\mathcal P_d(n) = \bigl\{ X \in \mathbb R^{n×n} \big|\ X=X^\mathrm{T} \text{ and } \operatorname{tr}(X) = 0 \bigr\},\]

since for a constant determinant we require that $0 = D\det(p)[Z] = \det(p)\operatorname{tr}(p^{-1}Z)$ for all tangent vectors $Z$. Additionally we store the tangent vectors as $X=p^{-1}Z$, i.e. symmetric matrices.


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 can is a submanifold of the symmetric positive definite matrices and hence inherits most properties therefrom.

The differences are the functions

ManifoldsBase.check_vector — Method
check_vector(M::SPDFixedDeterminant, p, X; kwargs... )

Check whether X is a tangent vector to manifold point p on the SPDFixedDeterminant M, i.e. X has to be a tangent vector on SymmetricPositiveDefinite, so a symmetric matrix, and additionally fulfill $\operatorname{tr}(X) = 0$.

The tolerance for the trace check of X can be set using kwargs..., which influences the isapprox-check.

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), by setting its diagonal (and hence its trace) to zero.

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\]