Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

QwtSpline Class Reference

A class for spline interpolation. More...

#include <qwt_spline.h>

List of all members.

Public Methods

 QwtSpline ()
 ~QwtSpline ()
double value (double x) const
int recalc (double *x, double *y, int n, int periodic = 0)
void copyValues (int tf = 1)


Detailed Description

A class for spline interpolation.

The QwtSpline class is used for cubical spline interpolation. Two types of splines, natural and periodic, are supported.

Usage:
  1. First call recalc() to determine the spline coefficients for a tabulated function y(x).
  2. After the coefficients have been set up, the interpolated function value for an argument x can be determined by calling value().
In order to save storage space, QwtSpline can be advised not to buffer the contents of x and y. This means that the arrays have to remain valid and unchanged for the interpolation to work properly. This can be achieved by calling copyValues().
Example:
#include<qwt_spline.h>
#include<iostream.h>

QwtSpline s;
double x[30], y[30], xInter[300], yInter[300];
int i;

for(i=0;i<30;i++)               // fill up x[] and y[]
cin >> x[i] >> y[i];

if (s.recalc(x,y,30,0) == 0)    // build natural spline
{
   for(i=0;i<300;i++)          // interpolate
   {
     xInter[i] = x[0] + double(i) * (x[29] - x[0]) / 299.0;
     yInter[i] = s.value( xInter[i] );
   }

   do_something(xInter, yInter, 300);
}
else
  cerr << "Uhhh...\n";


Constructor & Destructor Documentation

QwtSpline::QwtSpline ( )
 

CTOR.

QwtSpline::~QwtSpline ( )
 

DTOR.


Member Function Documentation

void QwtSpline::copyValues ( int tf = 1 )
 

Advise recalc() to buffer the tabulated function or switch off internal buffering.

By default, QwtSpline maintains an internal copy of the tabulated function given as *x and *y arguments of recalc().

If copyValues() is called with zero argument, subsequent calls to recalc() will not buffer these values anymore and just store the pointers instead. The value() function will then silently assume that these pointers remained valid and that the contents of the arrays have not been changed since the last recalc().

If called with no or nonzero argument, any following recalc() calls will use the internal buffer.

Parameters:
tf   if nonzero, the function table will be buffered
Warning:
copyValues() resets all the contents of QwtSpline. A subsequent recalc() will be necessary.

int QwtSpline::recalc ( double * x,
double * y,
int n,
int periodic = 0 )
 

re-calculate the spline coefficients.

Depending on the value of <periodic>, this function will determine the coefficients for a natural or a periodic spline and store them internally. By default, it also buffers the values of x and y, which are needed for the interpolation (See value()). In order to save memory, this last behaviour may be changed with the copyValues() function.

Parameters:
x  
y   points
n   number of points
periodic   if non-zero, calculate periodic spline
Returns:
0
successful
Qwt::ErrMono
Sequence of x values is not strictly monotone increasing
Qwt::ErrNoMem
Couldn't allocate memory
Warning:
The sequence of x (but not y) values has to be strictly monotone increasing, which means x[0] < x[1] < .... < x[n-1]. If this is not the case, the function will return an error.

double QwtSpline::value ( double x ) const
 

Calculate the interpolated function value corresponding to a given argument x.


The documentation for this class was generated from the following files:
Generated at Thu Dec 14 00:27:21 2000 for Qwt User's Guide by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000