Provided by: blt_2.4z-4.2ubuntu1_amd64 #### 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-
coordinates.

```

#### INTRODUCTION

```       Curve  fitting  has  many  applications.   In  graphs,  curve  fitting  can  be useful for
displaying 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
mathematical 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
represents 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
represent 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
monotonically 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.

interpolation 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
created.

```

#### REFERENCES

```       Numerical Analysis
by R. Burden, J. Faires and A. Reynolds.
Prindle, Weber & Schmidt, 1981, pp. 112

```       spline, vector, graph