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. Since it is a totally geodesic submanifold, for example the exponential and logarithmic maps, retractions, parallel transport and the Riemann tensor are those of the embedding.
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.injectivity_radius โ Method
injectivity_radius(M::SPDFixedDeterminant[, p])Return the injectivity radius of the SPDFixedDeterminant M, which is $โ$ as for the SymmetricPositiveDefinite matrices, since a totally geodesic submanifold of a Hadamard manifold is a Hadamard manifold. For $n = 1$ the manifold consists of a single point and the injectivity radius is $0$.
ManifoldsBase.is_flat โ Method
is_flat(M::SPDFixedDeterminant)Return true if the SPDFixedDeterminant M is a single point, i.e. for $n = 1$, and false otherwise.
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\]
ManifoldsBase.riemann_tensor โ Method
riemann_tensor(M::SPDFixedDeterminant, p, X, Y, Z)Compute the Riemann tensor $R(X,Y)Z$ at p on the SPDFixedDeterminant M, which is the one of the SymmetricPositiveDefinite matrices, since M is a totally geodesic submanifold.
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.