pdPolynomial: Generate intrinsic HPD polynomial curves

Description Usage Arguments Value References See Also Examples

View source: R/polynomial.R

Description

pdPolynomial generates intrinsic polynomial curves in the manifold of HPD matrices equipped with the affine-invariant Riemannian metric (see \insertCiteB09pdSpecEst[Chapter 6] or \insertCitePFA05pdSpecEst) according to the numerical integration procedure in \insertCiteHFJ14pdSpecEst. 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

1
pdPolynomial(p0, v0, delta.t = 0.01, steps = 100)

Arguments

p0

a (d, d)-dimensional HPD matrix specifying the starting point of the polynomial curve.

v0

a (d, d, k)-dimensional array corresponding to a sequence of (d,d)-dimensional Hermitian matrix-valued covariant derivatives from order zero up to order k - 1 at the starting point p0.

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 delta.t = 0.01.

steps

number of incrementing steps in the numerical integration procedure, defaults to steps = 100.

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

\insertAllCited

See Also

pdNeville, pdParTrans

Examples

1
2
3
4
5
6
7
8
9
## 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)

pdSpecEst documentation built on Jan. 8, 2020, 5:08 p.m.