IMSL C# Numerical Library

BsInterpolate Class

Extension of the BSpline class to interpolate data points.

For a list of all members of this type, see BsInterpolate Members.

System.Object
   Imsl.Math.BSpline
      Imsl.Math.BsInterpolate

public class BsInterpolate : BSpline

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

Given the data points x = xData, f = yData, and n the number of elements in xData and yData, the default action of BsInterpolate computes a cubic (order = 4) spline interpolant s to the data using a default "not-a-knot" knot sequence. Constructors are also provided that allow the order and knot sequence to be specified. This algorithm is based on the routine SPLINT by de Boor (1978, p. 204).

First, the xData vector is sorted and the result is stored in x. The elements of yData are permuted appropriately and stored in f, yielding the equivalent data (x_i, f_i) for i = 0 to n-1. The following preliminary checks are performed on the data, with k = order. We verify that

x_i \lt x_{i+1}\mbox{ for }i=0,\ldots,n-2

{\bf t}_i \lt {\bf t}_{i+k}\mbox{ for }i=0,\ldots,n-1

{\bf t}_i \lt {\bf t}_{i+1}\mbox{ for }i=0,\ldots,n+k-2

The first test checks to see that the abscissas are distinct. The second and third inequalities verify that a valid knot sequence has been specified.

In order for the interpolation matrix to be nonsingular, we also check {\bf t}_{k-1} \leq x_i \leq {\bf t}_n for i = 0 to n-1. This first inequality in the last check is necessary since the method used to generate the entries of the interpolation matrix requires that the k possibly nonzero B-splines at x_i, B_{j-k+1}, ..., B_j where j satisfies {\bf t}_j \leq x_i \lt {\bf t}_{j+1} be well-defined (that is, j-k+1 \geq 0).

Requirements

Namespace: Imsl.Math

Assembly: ImslCS (in ImslCS.dll)

See Also

BsInterpolate Members | Imsl.Math Namespace | Example