pdPolynomial {pdSpecEst} | R Documentation |
Generate intrinsic HPD polynomial curves
Description
pdPolynomial
generates intrinsic polynomial curves in the manifold of HPD matrices
equipped with the affine-invariant Riemannian metric (see (Bhatia 2009)[Chapter 6]
or (Pennec et al. 2006)) according to the numerical integration procedure in (Hinkle et al. 2014).
Given an initial starting point p0
(i.e., a HPD matrix) in the Riemannian manifold and covariant
derivatives up to order k - 1
at p0
, pdPolynomial
approximates the uniquely existing
intrinsic polynomial curve of degree k
passing through p0
with the given covariant derivatives up
to order k - 1
and vanishing higher order covariant derivatives.
Usage
pdPolynomial(p0, v0, delta.t = 0.01, steps = 100)
Arguments
p0 |
a |
v0 |
a |
delta.t |
a numeric value determining the incrementing step size in the numerical integration procedure.
A smaller step size results in a higher resolution and therefore a more accurate approximation of the polynomial curve,
defaults to |
steps |
number of incrementing steps in the numerical integration procedure, defaults to |
Value
A (d, d, length(steps))
-dimensional array corresponding to a generated (approximate)
intrinsic polynomial curve in the space of (d,d)
-dimensional HPD matrices of degree k
passing through p0
with the given covariant derivatives v0
up to order k - 1
and vanishing higher order covariant derivatives.
References
Bhatia R (2009).
Positive Definite Matrices.
Princeton University Press, New Jersey.
Hinkle J, Fletcher P, Joshi S (2014).
“Intrinsic polynomials for regression on Riemannian manifolds.”
Journal of Mathematical Imaging and Vision, 50(1-2), 32–52.
Pennec X, Fillard P, Ayache N (2006).
“A Riemannian framework for tensor computing.”
International Journal of Computer Vision, 66(1), 41–66.
See Also
Examples
## First-order polynomial
p0 <- diag(3) ## HPD starting point
v0 <- array(H.coeff(rnorm(9), inverse = TRUE), dim = c(3, 3, 1)) ## zero-th order cov. derivative
P.poly <- pdPolynomial(p0, v0)
## First-order polynomials coincide with geodesic curves
P.geo <- sapply(seq(0, 1, length = 100), function(t) Expm(p0, t * Logm(p0, P.poly[, , 100])),
simplify = "array")
all.equal(P.poly, P.geo)