N:blt spline

From Linux Man Pages

Jump to: navigation, search
      spline -  Fit curves with spline interpolation
      


Contents

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 aes-
      thetically 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
      polynominal 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 sim-
      ple 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 dis-
      tributed 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 draftmen'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 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  com-
             ponents  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 com-
             ponents 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
 
      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 quadratric spline can be found in TOMS #574.

KEYWORDS

      spline, vector, graph

CATEGORY

Personal tools