Rev 7782 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{splinefun}\alias{spline}\alias{splinefun}\title{Interpolating Splines}\description{Perform cubic spline interpolation of given data points, returningeither a list of points obtained by the interpolation or a functionperforming the interpolation.\usage{splinefun(x, y, method = "fmm")spline(x, y, n = 3*length(x), method = "fmm",xmin = min(x), xmax = max(x))}\arguments{\item{x,y}{vectors giving the coordinates of the points to beinterpolated. Alternatively a single plotting structure can bespecified.}\item{method}{specifies the type of spline to be used. Possiblevalues are \code{"fmm"}, \code{"natural"} and \code{"periodic"}.}\item{n}{interpolation takes place at \code{n} equally spaced pointsspanning the interval [\code{xmin}, \code{xmax}].}\item{xmin}{left-hand endpoint of the interpolation interval.}\item{xmax}{right-hand endpoint of the interpolation interval.}}\details{If \code{method = "fmm"}, the spline used is that of Forsythe, Malcolmand Moler (an exact cubic is fitted through the four points at eachend of the data, and this is used to determine the end conditions).Natural splines are used when \code{method="natural"}, and periodicsplines when \code{method="periodic"}.}\value{\code{spline} returns a list containing components \code{x} and\code{y} which give the ordinates where interpolation took place andthe interpolated values.\code{splinefun} returns a function which will perform cubic splineinterpolation of the given data points. This is often more usefulthan \code{spline}.}\references{Forsythe, G. E., Malcolm, M. A. and Moler, C. B. (1977)\emph{Computer Methods for Mathematical Computations}.}\seealso{\code{\link{approx}} and \code{\link{approxfun}} for constant andlinear interpolation.}\examples{op <- par(mfrow = c(2,1), mgp = c(2,.8,0), mar = .1+c(3,3,3,1))n <- 9x <- 1:ny <- rnorm(n)plot(x, y, main = paste("spline[fun](.) through",n,"points"))lines(spline(x, y))lines(spline(x, y, n = 201), col = 2)y <- (x-6)^2plot(x, y, main = "spline(.) -- 3 methods")lines(spline(x, y, n = 201), col = 2)lines(spline(x, y, n = 201, method = "natural"), col = 3)lines(spline(x, y, n = 201, method = "periodic"), col = 4)legend(6,25, c("fmm","natural","periodic"), col=2:4, lty=1)f <- splinefun(x, y)ls(envir = environment(f))splinecoef <- eval(expression(z), envir = environment(f))curve(f(x), 1, 10, col = "green", lwd = 1.5)points(splinecoef, col = "purple", cex = 2)par(op)}\keyword{math}\keyword{dplot}