https://github.com/cran/pracma
Tip revision: 03698027c2d84118bd0c53c4a9a5b5d23676f388 authored by HwB on 01 October 2012, 00:00:00 UTC
version 1.2.0
version 1.2.0
Tip revision: 0369802
pp.Rd
\name{ppval}
\alias{mkpp}
\alias{ppval}
\title{
Piecewise Polynomial Structures
}
\description{
Make or evaluate a piecewise polynomial.
}
\usage{
mkpp(x, P)
ppval(pp, xx)
}
\arguments{
\item{x}{increasing vector of real numbers.}
\item{P}{matrix containing the coefficients of polynomials in each row.}
\item{pp}{a piecewise polynomial structure, generated by \code{mkpp}.}
\item{xx}{numerical vector}
}
\details{
\code{pp<-mkpp(x,P)} builds a piecewise polynomial from its breaks
\code{x} and coefficients \code{P}. \code{x} is a monotonically increasing
vector of length \code{L+1}, and \code{P} is an \code{L-by-k} matrix where
each row contains the coefficients of the polynomial of order \code{k}, from
highest to lowest exponent, on the interval \code{[x[i],x[i+1])}.
\code{ppval(pp,xx)} returns the values of the piecewise polynomial
\code{pp} at the entries of the vector \code{xx}. The first and last
polynomial will be extended to the left resp. right of the interval
\code{[x[1],x[L+1])}.
}
\value{
\code{mkpp} will return a piecewise polynomial structure, that is a list
with components \code{breaks=x}, \code{pieces=P}, \code{order=k} and
\code{dim=1} for scalar-valued functions.
}
\note{
Matlab allows to generate vector-valued piecewise polynomials. This may be
included in later versions.
}
\author{
HwB email: <hwborchers@googlemail.com>
}
\seealso{
\code{\link{cubicspline}}
}
\examples{
## 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)
\dontrun{
plot(xs, ys); grid()
x100 <- linspace(0, pi, 100)
lines(x100, sin(x100), col="darkgray")
ypp <- ppval(ppsin, x100)
lines(x100, ypp, col="red")
}
}
\keyword{ fitting }