Symmetric positive definite matrices of fixed determinant
Manifolds.SPDFixedDeterminant
— TypeSPDFixedDeterminant{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.
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 can is a submanifold of the symmetric positive definite matrices and hence inherits most properties therefrom.
The differences are the functions
ManifoldsBase.check_point
— Methodcheck_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
— Methodcheck_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
— MethodY = 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
— Methodq = 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\]