View source: R/evaluate_spline.R
evaluate_spline | R Documentation |
Given a natural spline function Y:\R\to\R
, defined as a series of Y values on a discrete X grid, evaluate its values (or derivative) at arbitrary X points. Supported splines degrees are 0 (Y is piecewise constant), 1 (piecewise linear), 2 (piecewise quadratic) and 3 (piecewise cubic).
evaluate_spline(Xgrid,
Ygrid,
splines_degree,
Xtarget,
extrapolate = "const",
derivative = 0)
Xgrid |
Numeric vector, listing x-values in ascending order. |
Ygrid |
Numeric vector of the same length as |
splines_degree |
Integer, either 0, 1, 2 or 3, specifying the polynomial degree of the spline curve Y between grid points. For example, 0 means Y is piecewise constant, 1 means Y is piecewise linear and so on. |
Xtarget |
Numeric vector, listing arbitrary X values on which to evaluate Y. |
extrapolate |
Character, specifying how to extrapolate Y beyond |
derivative |
Integer, specifying which derivative to return. To return the spline's value, set |
Spline functions are returned by some of castor's fitting routines, so evaluate_spline
is meant to aid with the evaluation and plotting of such functions. A spline function of degree D\geq1
has continuous derivatives up to degree D-1
. The function evaluate_spline
is much more efficient if Xtarget
is monotonically increasing or decreasing.
This function is used to evaluate the spline's values at arbitrary points. To obtain the spline's polynomial coefficients, use spline_coefficients
.
A numeric vector of the same length as Xtarget
, listing the values (or derivatives, if derivative>0
) of Y on Xtarget
.
Stilianos Louca
spline_coefficients
# specify Y on a coarse X grid
Xgrid = seq(from=0,to=10,length.out=10)
Ygrid = sin(Xgrid)
# define a fine grid of target X values
Xtarget = seq(from=0,to=10,length.out=1000)
# evaluate Y on Xtarget, either as piecewise linear or piecewise cubic function
Ytarget_lin = evaluate_spline(Xgrid,Ygrid,splines_degree=1,Xtarget=Xtarget)
Ytarget_cub = evaluate_spline(Xgrid,Ygrid,splines_degree=3,Xtarget=Xtarget)
# plot both the piecewise linear and piecewise cubic curves
plot(x=Xtarget, y=Ytarget_cub, type='l', col='red', xlab='X', ylab='Y')
lines(x=Xtarget, y=Ytarget_lin, type='l', col='blue', xlab='X', ylab='Y')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.