This function evaluates a function defined on a set of points using quadratic interpolation.
QDVAL — Value of the quadratic interpolant at X. (Output)
X — Coordinate of the point at which the function is to be evaluated. (Input)
XDATA — Array of
length NDATA
containing the location of the data points. (Input)
XDATA must be strictly
increasing.
FDATA — Array of
length NDATA
containing the function values. (Input)
FDATA(I) is the value of the
function at XDATA(I).
NDATA —
Number of data points. (Input)
NDATA must be at least
3.
Default: NDATA = size (XDATA,1).
CHECK — Logical
variable that is .TRUE. if checking of
XDATA is
required or .FALSE. if checking is
not required. (Input)
Default: CHECK = .TRUE.
Generic: QDVAL (X, XDATA, FDATA [,…])
Specific: The specific interface names are S_QDVAL and D_QDVAL.
Single: QDVAL (X, NDATA, XDATA, FDATA, CHECK)
Double: The double precision name is DQDVAL.
The function QDVAL interpolates a table of values, using quadratic polynomials, returning an approximation to the tabulated function. Let (xi, fi) for i = 1, …, n be the tabular data. Given a number x at which an interpolated value is desired, we first find the nearest interior grid point xi. A quadratic interpolant q is then formed using the three points (xi-1, fi-1), (xi, fi), and (xi+1, fi+1). The number returned by QDVAL is q(x).
Informational error
Type Code
4 3 The XDATA values must be strictly increasing.
In this example, the value of sin x is approximated at π/4 by using QDVAL on a table of 33 equally spaced values.
USE IMSL_LIBRARIES
IMPLICIT NONE
INTEGER NDATA
PARAMETER (NDATA=33)
!
INTEGER I, NOUT
REAL F, FDATA(NDATA), H, PI, QT, SIN, X,&
XDATA(NDATA)
INTRINSIC SIN
! Define function
F(X) = SIN(X)
! Generate data points
XDATA(1) = 0.0
FDATA(1) = F(XDATA(1))
H = 1.0/32.0
DO 10 I=2, NDATA
XDATA(I) = XDATA(I-1) + H
FDATA(I) = F(XDATA(I))
10 CONTINUE
! Get value of PI and set X
PI = CONST('PI')
X = PI/4.0
! Evaluate at PI/4
QT = QDVAL(X,XDATA,FDATA)
! Get output unit number
CALL UMACH (2, NOUT)
! Print results
WRITE (NOUT,99999) X, F(X), QT, (F(X)-QT)
!
99999 FORMAT (15X, 'X', 6X, 'F(X)', 6X, 'QDVAL', 5X, 'ERROR', //, 6X,&
4F10.3, /)
END
X
F(X) QDVAL
ERROR
0.785 0.707
0.707 0.000
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |