spline(n) BLT Built-In Commands spline(n)
_________________________________________________________________________________________________
NAME
spline - Fit curves with spline interpolation
SYNOPSIS
spline natural x y sx sy
spline quadratic x y sx sy
_________________________________________________________________
DESCRIPTION
The spline command computes a spline fitting a set of data points (x and y vectors) and
produces a vector of the interpolated images (y-coordinates) at a given set of x-coordi-
nates.
INTRODUCTION
Curve fitting has many applications. In graphs, curve fitting can be useful for display-
ing curves which are aesthetically pleasing to the eye. Another advantage is that you can
quickly generate arbitrary points on the curve from a small set of data points.
A spline is a device used in drafting to produce smoothed curves. The points of the
curve, known as knots, are fixed and the spline, typically a thin strip of wood or metal,
is bent around the knots to create the smoothed curve. Spline interpolation is the mathe-
matical equivalent. The curves between adjacent knots are piecewise functions such that
the resulting spline runs exactly through all the knots. The order and coefficients of
the polynomial determine the "looseness" or "tightness" of the curve fit from the line
segments formed by the knots.
The spline command performs spline interpolation using cubic ("natural") or quadratic
polynomial functions. It computes the spline based upon the knots, which are given as x
and y vectors. The interpolated new points are determined by another vector which repre-
sents the abscissas (x-coordinates) or the new points. The ordinates (y-coordinates) are
interpolated using the spline and written to another vector.
EXAMPLE
Before we can use the spline command, we need to create two BLT vectors which will repre-
sent the knots (x and y coordinates) of the data that we're going to fit. Obviously, both
vectors must be the same length.
# Create sample data of ten points.
vector x(10) y(10)
for {set i 10} {$i > 0} {incr i -1} {
set x($i-1) [expr $i*$i]
set y($i-1) [expr sin($i*$i*$i)]
}
We now have two vectors x and y representing the ten data points we're trying to fit. The
order of the values of x must be monotonically increasing. We can use the vector's sort
operation to sort the vectors.
x sort y
The components of x are sorted in increasing order. The components of y are rearranged so
that the original x,y coordinate pairings are retained.
A third vector is needed to indicate the abscissas (x-coordinates) of the new points to be
interpolated by the spline. Like the x vector, the vector of abscissas must be monotoni-
cally increasing. All the abscissas must lie between the first and last knots (x vector)
forming the spline.
How the abscissas are picked is arbitrary. But if we are going to plot the spline, we
will want to include the knots too. Since both the quadratic and natural splines preserve
the knots (an abscissa from the x vector will always produce the corresponding ordinate
from the y vector), we can simply make the new vector a superset of x. It will contain
the same coordinates as x, but also the abscissas of the new points we want interpolated.
A simple way is to use the vector's populate operation.
x populate sx 10
This creates a new vector sx. It contains the abscissas of x, but in addition sx will
have ten evenly distributed values between each abscissa. You can interpolate any points
you wish, simply by setting the vector values.
Finally, we generate the ordinates (the images of the spline) using the spline command.
The ordinates are stored in a fourth vector.
spline natural x y sx sy
This creates a new vector sy. It will have the same length as sx. The vectors sx and sy
represent the smoothed curve which we can now plot.
graph .graph
.graph element create original -x x -y x -color blue
.graph element create spline -x sx -y sy -color red
table . .graph
The natural operation employs a cubic interpolant when forming the spline. In terms of
the draftsmen's spline, a natural spline requires the least amount of energy to bend the
spline (strip of wood), while still passing through each knot. In mathematical terms, the
second derivatives of the first and last points are zero.
Alternatively, you can generate a spline using the quadratic operation. Quadratic inter-
polation produces a spline which follows the line segments of the data points much more
closely.
spline quadratic x y sx sy
OPERATIONS
spline natural x y sx sy
Computes a cubic spline from the data points represented by the vectors x and y and
interpolates new points using vector sx as the x-coordinates. The resulting y-
coordinates are written to a new vector sy. The vectors x and y must be the same
length and contain at least three components. The order of the components of x
must be monotonically increasing. Sx is the vector containing the x-coordinates of
the points to be interpolated. No component of sx can be less than first component
of x or greater than the last component. The order of the components of sx must be
monotonically increasing. Sy is the name of the vector where the calculated y-
coordinates will be stored. If sy does not already exist, a new vector will be
created.
spline quadratic x y sx sy
Computes a quadratic spline from the data points represented by the vectors x and y
and interpolates new points using vector sx as the x-coordinates. The resulting y-
coordinates are written to a new vector sy. The vectors x and y must be the same
length and contain at least three components. The order of the components of x
must be monotonically increasing. Sx is the vector containing the x-coordinates of
the points to be interpolated. No component of sx can be less than first component
of x or greater than the last component. The order of the components of sx must be
monotonically increasing. Sy is the name of the vector where the calculated y-
coordinates are stored. If sy does not already exist, a new vector will be cre-
ated.
REFERENCES
Numerical Analysis
by R. Burden, J. Faires and A. Reynolds.
Prindle, Weber & Schmidt, 1981, pp. 112
Shape Preserving Quadratic Splines
by D.F.Mcallister & J.A.Roulier
Coded by S.L.Dodd & M.Roulier N.C.State University.
The original code for the quadratic spline can be found in TOMS #574.
KEYWORDS
spline, vector, graph
BLT 2.4 spline(n)
Generated by $Id: phpMan.php,v 4.49 2006/02/26 13:18:18 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2012-05-26 06:50 @38.107.179.238 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html)