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 at
p0
, pdPolynomial
approximates the uniquely existing
intrinsic polynomial curve of degree passing through
p0
with the given covariant derivatives up
to order 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 -dimensional HPD matrices of degree
passing through
p0
with the given covariant derivatives v0
up to order
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)