List

### Description

Perform cubic spline monotonic interpolation of given data points, returning either a list of points obtained by the interpolation or a function performing the interpolation. The splines are constrained to be monotonically increasing (i.e., the slope is never negative).

### Usage

cm.splinefun(x, y = NULL, method = "fmm", gulim=0)
cm.spline(x, y = NULL, n = 3*length(x), method = "fmm", xmin = min(x), xmax = max(x), gulim=0)

### Arguments

 x,y vectors giving the coordinates of the points to be interpolated. Alternatively a single plotting structure can be specified: see xy.coords. method specifies the type of spline to be used. Possible values are “fmm”, “natural” and “periodic”. n interpolation takes place at n equally spaced points spanning the interval [xmin, xmax]. xmin left-hand endpoint of the interpolation interval. xmax right-hand endpoint of the interpolation interval. gulim if gulim!=0 then it is taken as the upper limit on the gradient, and interpolant is gradient limited rather than monotonic.

### Details

Results are identical to splinefun except that Hyman Filtering is used to produce co-monotonic interpolation.

### Value

 spline returns a list containing components x and y which give the ordinates where interpolation took place and the interpolated values. splinefun returns a function which will perform cubic spline interpolation of the given data points. This is often more useful than spline.

### Authors

Simon N. Wood, Rob J Hyndman

### References

Forsythe, G. E., Malcolm, M. A. and Moler, C. B. (1977) Computer Methods for Mathematical Computations.
Hyman (1983) SIAM J. Sci. Stat. Comput. 4(4):645-654.
Dougherty, Edelman and Hyman 1989 Mathematics of Computation,52: 471-494.

### Examples

x <- seq(0,4,l=20)
y <- sort(rnorm(20))
plot(x,y)
lines(spline(x, y, n = 201), col = 2) # Not necessarily monotonic
lines(cm.spline(x, y, n = 201), col = 3) # Monotonic