JMSLTM Numerical Library 4.0

com.imsl.math
Class BSpline

java.lang.Object
  extended bycom.imsl.math.BSpline
All Implemented Interfaces:
Cloneable, Serializable
Direct Known Subclasses:
BsInterpolate, BsLeastSquares

public abstract class BSpline
extends Object
implements Serializable, Cloneable

BSpline represents and evaluates univariate B-splines.

B-splines provide a particularly convenient and suitable basis for a given class of smooth ppoly functions. Such a class is specified by giving its breakpoint sequence, its order k, and the required smoothness across each of the interior breakpoints. The corresponding B-spline basis is specified by giving its knot sequence {bf t} in {bf R}^M. The specification rule is as follows: If the class is to have all derivatives up to and including the j-th derivative continuous across the interior breakpoint xi_i, then the number xi_i should occur k - j - 1 times in the knot sequence. Assuming that xi_1 and xi_n are the endpoints of the interval of interest, choose the first k knots equal to xi_1 and the last k knots equal to xi_n. This can be done because the B-splines are defined to be right continuous near xi_1 and left continuous near xi_n.

When the above construction is completed, a knot sequence {bf 
  t} of length M is generated, and there are m: = M-k B-splines of order k, for example B_0, ..., 
  B_{m-1}, spanning the ppoly functions on the interval with the indicated smoothness. That is, each ppoly function in this class has a unique representation p = a_0B_0 + a_1B_1 + ... + a_{m-1}B_{m-1} as a linear combination of B-splines. A B-spline is a particularly compact piecewise polynomial function. B_i is a nonnegative function that is nonzero only on the interval [{bf t}_i,{bf t}_{i+k}]. More precisely, the support of the i-th B-spline is left[ t_i,t_{i+k}right]. No piecewise polynomial function in the same class (other than the zero function) has smaller support (i.e., vanishes on more intervals) than a B-spline. This makes B-splines particularly attractive basis functions since the influence of any particular B-spline coefficient extends only over a few intervals.

See Also:
BsInterpolate.html Example, BsLeastSquares.html Example, Serialized Form

Field Summary
protected  double[] coef
          The B-spline coefficient array.
protected  double[] knot
          The knot array of length n + order, where n is the number of coefficients in the B-spline.
protected  int order
          Order of the spline.
 
Constructor Summary
BSpline()
           
 
Method Summary
 double derivative(double x)
          Returns the value of the first derivative of the B-spline at a point.
 double[] derivative(double[] x, int ideriv)
          Returns the value of the derivative of the B-spline at each point of an array.
 double derivative(double x, int ideriv)
          Returns the value of the derivative of the B-spline at a point.
 double[] getKnots()
          Returns a copy of the knot sequence.
 Spline getSpline()
          Returns a Spline representation of the B-spline.
 double integral(double a, double b)
          Returns the value of an integral of the B-spline.
 double value(double x)
          Returns the value of the B-spline at a point.
 double[] value(double[] x)
          Returns the value of the B-spline at each point of an array.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

coef

protected double[] coef
The B-spline coefficient array.


knot

protected double[] knot
The knot array of length n + order, where n is the number of coefficients in the B-spline.


order

protected int order
Order of the spline.

Constructor Detail

BSpline

public BSpline()
Method Detail

derivative

public double derivative(double x)
Returns the value of the first derivative of the B-spline at a point.

Parameters:
x - a double specifying a point at which the derivative is to be evaluated
Returns:
a double containing the value of the first derivative of the B-spline at the point x

derivative

public double[] derivative(double[] x,
                           int ideriv)
Returns the value of the derivative of the B-spline at each point of an array.

Parameters:
x - a double array of points at which the derivative is to be evaluated
ideriv - an int specifying the derivative to be computed. If zero, the function value is returned. If one, the first derivative is returned, etc.
Returns:
a double array containing the value of the derivative the B-spline at each point of the array x

derivative

public double derivative(double x,
                         int ideriv)
Returns the value of the derivative of the B-spline at a point.

Parameters:
x - a double specifying a point at which the derivative is to be evaluated
ideriv - an int specifying the derivative to be computed. If zero, the function value is returned. If one, the first derivative is returned, etc.
Returns:
a double containing the value of the derivative of the B-spline at the point x

getKnots

public double[] getKnots()
Returns a copy of the knot sequence.

Returns:
a double array containing a copy of the knot sequence.

getSpline

public Spline getSpline()
Returns a Spline representation of the B-spline.

Returns:
a Spline representation of the BSpline

integral

public double integral(double a,
                       double b)
Returns the value of an integral of the B-spline.

Parameters:
a - a double specifying the lower limit of integration
b - a double specifying the upper limit of integration
Returns:
a double which specifies the B-spline integral value from a to b

value

public double value(double x)
Returns the value of the B-spline at a point.

Parameters:
x - a double specifying the point at which the B-spline is to be evaluated
Returns:
a double giving the value of the B-spline at the point x

value

public double[] value(double[] x)
Returns the value of the B-spline at each point of an array.

Parameters:
x - a double array of points at which the B-spline is to be evaluated
Returns:
a double array containing the value of the B-spline at each point of the array x

JMSLTM Numerical Library 4.0

Copyright 1970-2006 Visual Numerics, Inc.
Built June 1 2006.