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 — Type
CholeskySpace{T} <: 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 [Lin19].
Constructor
CholeskySpace(n; parameter::Symbol=:type)Generate the manifold of $n×n$ lower triangular matrices with positive diagonal.
Base.exp — Method
exp(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)\exp\bigl( \operatorname{diag}(X)\operatorname{diag}(p)^{-1}\bigr),\]
where $⌊⋅⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.
Base.log — Method
log(M::CholeskySpace, 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 = ⌊ q ⌋ - ⌊ p ⌋ + \operatorname{diag}(p)\log\bigl(\operatorname{diag}(q)\operatorname{diag}(p)^{-1}\bigr),\]
where $⌊⋅⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.
ManifoldsBase.check_point — Method
check_point(M::CholeskySpace, p; kwargs...)Check whether the matrix p lies on the CholeskySpace M, i.e. its 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 — Method
check_vector(M::CholeskySpace, p, X; kwargs... )Check whether X 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 to be a lower triangular matrix. The tolerance for the tests can be set using the kwargs....
ManifoldsBase.distance — Method
distance(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 — Method
inner(M::CholeskySpace, p, X, Y)Compute the inner product on the CholeskySpace M at p for the tangent vectors X and Y. Here p is a lower triangular matrix with positive diagonal and X, Y are 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.is_flat — Method
is_flat(::CholeskySpace)Return true. CholeskySpace is a flat manifold. See Proposition 8 of [Lin19].
ManifoldsBase.manifold_dimension — Method
manifold_dimension(M::CholeskySpace)Return the manifold dimension for the CholeskySpace M, i.e.
\[ \dim(\mathcal M) = \frac{N(N+1)}{2}.\]
ManifoldsBase.parallel_transport_to — Method
parallel_transport_to(M::CholeskySpace, p, X, q)Parallelly 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 $⌊⋅⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.
ManifoldsBase.representation_size — Method
representation_size(M::CholeskySpace)Return the representation size for the CholeskySpace{N} M, i.e. (N,N).
ManifoldsBase.riemann_tensor — Method
riemann_tensor(M::CholeskySpace, p, X, Y, Z)Compute the Riemann tensor $R(X,Y)Z$ at point p on the CholeskySpace M. Its value is always the zero tangent vector, since M is flat.
ManifoldsBase.sectional_curvature — Method
sectional_curvature(M::CholeskySpace, p, X, Y)Return the sectional curvature 0 of the CholeskySpace M, which is flat.
ManifoldsBase.sectional_curvature_max — Method
sectional_curvature_max(M::CholeskySpace)Return the upper bound 0 of the sectional curvature of the CholeskySpace M, which is flat.
ManifoldsBase.sectional_curvature_min — Method
sectional_curvature_min(M::CholeskySpace)Return the lower bound 0 of the sectional curvature of the CholeskySpace M, which is flat.
ManifoldsBase.zero_vector — Method
zero_vector(M::CholeskySpace, p)Return the zero tangent vector on the CholeskySpace M at p.
Literature
- [Lin19]
- Z. Lin. Riemannian Geometry of Symmetric Positive Definite Matrices via Cholesky Decomposition. SIAM Journal on Matrix Analysis and Applications 40, 1353–1370 (2019), arXiv:1908.09326.