Cholesky space
The Cholesky space is a Riemannian manifold on the lower triangular matrices. Its metric is based on the cholesky decomposition. The CholeskySpace
is used to define the LogCholeskyMetric
on the manifold of SymmetricPositiveDefinite
matrices.
Manifolds.CholeskySpace
— TypeCholeskySpace{N} <: AbstractManifold{ℝ}
The manifold of lower triangular matrices with positive diagonal and a metric based on the cholesky decomposition. The formulae for this manifold are for example summarized in Table 1 of [Lin2019].
Constructor
CholeskySpace(n)
Generate the manifold of $n× n$ lower triangular matrices with positive diagonal.
Base.exp
— Methodexp(M::CholeskySpace, p, X)
Compute the exponential map on the CholeskySpace
M
emanating from the lower triangular matrix with positive diagonal p
towards the lower triangular matrix X
The formula reads
\[\exp_p X = ⌊ p ⌋ + ⌊ X ⌋ + \operatorname{diag}(p) \operatorname{diag}(p)\exp\bigl( \operatorname{diag}(X)\operatorname{diag}(p)^{-1}\bigr),\]
where $⌊\cdot⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.
Base.log
— Methodlog(M::CholeskySpace, X, p, q)
Compute the logarithmic map on the CholeskySpace
M
for the geodesic emanating from the lower triangular matrix with positive diagonal p
towards q
. The formula reads
\[\log_p q = ⌊ p ⌋ - ⌊ q ⌋ + \operatorname{diag}(p)\log\bigl(\operatorname{diag}(q)\operatorname{diag}(p)^{-1}\bigr),\]
where $⌊\cdot⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.
ManifoldsBase.check_point
— Methodcheck_point(M::CholeskySpace, p; kwargs...)
Check whether the matrix p
lies on the CholeskySpace
M
, i.e. it's size fits the manifold, it is a lower triangular matrix and has positive entries on the diagonal. The tolerance for the tests can be set using the kwargs...
.
ManifoldsBase.check_vector
— Methodcheck_vector(M::CholeskySpace, p, X; kwargs... )
Check whether v
is a tangent vector to p
on the CholeskySpace
M
, i.e. after check_point
(M,p)
, X
has to have the same dimension as p
and a symmetric matrix. The tolerance for the tests can be set using the kwargs...
.
ManifoldsBase.distance
— Methoddistance(M::CholeskySpace, p, q)
Compute the Riemannian distance on the CholeskySpace
M
between two matrices p
, q
that are lower triangular with positive diagonal. The formula reads
\[d_{\mathcal M}(p,q) = \sqrt{\sum_{i>j} (p_{ij}-q_{ij})^2 + \sum_{j=1}^m (\log p_{jj} - \log q_{jj})^2 }\]
ManifoldsBase.inner
— Methodinner(M::CholeskySpace, p, X, Y)
Compute the inner product on the CholeskySpace
M
at the lower triangular matric with positive diagonal p
and the two tangent vectors X
,Y
, i.e they are both lower triangular matrices with arbitrary diagonal. The formula reads
\[g_p(X,Y) = \sum_{i>j} X_{ij}Y_{ij} + \sum_{j=1}^m X_{ii}Y_{ii}p_{ii}^{-2}\]
ManifoldsBase.manifold_dimension
— Methodmanifold_dimension(M::CholeskySpace)
Return the manifold dimension for the CholeskySpace
M
, i.e.
\[ \dim(\mathcal M) = \frac{N(N+1)}{2}.\]
ManifoldsBase.representation_size
— Methodreporesentation_size(M::CholeskySpace)
Return the representation size for the CholeskySpace
{N}
M
, i.e. (N,N)
.
ManifoldsBase.vector_transport_to
— Methodvector_transport_to(M::CholeskySpace, p, X, q, ::ParallelTransport)
Parallely transport the tangent vector X
at p
along the geodesic to q
on the CholeskySpace
manifold M
. The formula reads
\[\mathcal P_{q←p}(X) = ⌊ X ⌋ + \operatorname{diag}(q)\operatorname{diag}(p)^{-1}\operatorname{diag}(X),\]
where $⌊\cdot⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.
ManifoldsBase.zero_vector
— Methodzero_vector(M::CholeskySpace, p)
Return the zero tangent vector on the CholeskySpace
M
at p
.
Literature
- Lin2019
Lin, Zenhua: "Riemannian Geometry of Symmetric Positive Definite Matrices via Cholesky Decomposition", arXiv: 1908.09326.