Piecewise Polynomial Structures
Make or evaluate a piecewise polynomial.
mkpp(x, P) ppval(pp, xx)
x |
increasing vector of real numbers. |
P |
matrix containing the coefficients of polynomials in each row. |
pp |
a piecewise polynomial structure, generated by |
xx |
numerical vector |
pp<-mkpp(x,P)
builds a piecewise polynomial from its breaks
x
and coefficients P
. x
is a monotonically increasing
vector of length L+1
, and P
is an L-by-k
matrix where
each row contains the coefficients of the polynomial of order k
, from
highest to lowest exponent, on the interval [x[i],x[i+1])
.
ppval(pp,xx)
returns the values of the piecewise polynomial
pp
at the entries of the vector xx
. The first and last
polynomial will be extended to the left resp. right of the interval
[x[1],x[L+1])
.
mkpp
will return a piecewise polynomial structure, that is a list
with components breaks=x
, pieces=P
, order=k
and
dim=1
for scalar-valued functions.
Matlab allows to generate vector-valued piecewise polynomials. This may be included in later versions.
## Example: Linear interpolation of the sine function xs <- linspace(0, pi, 10) ys <- sin(xs) P <- matrix(NA, nrow = 9, ncol = 2) for (i in 1:9) { P[i, ] <- c((ys[i+1]-ys[i])/(xs[i+1]-xs[i]), ys[i]) } ppsin <- mkpp(xs, P) ## Not run: plot(xs, ys); grid() x100 <- linspace(0, pi, 100) lines(x100, sin(x100), col="darkgray") ypp <- ppval(ppsin, x100) lines(x100, ypp, col="red") ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.