QDDER
This function evaluates the derivative of a function defined on a set of points using quadratic interpolation.
Function Return Value
QDDER — Value of the IDERIV-th derivative of the quadratic interpolant at X. (Output)
Required Arguments
IDERIV — Order of the derivative. (Input)
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).
Optional Arguments
NDATA — Number of data points. (Input)
NDATA must be at least three.
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.
FORTRAN 90 Interface
Generic: QDDER(IDERIV, X, XDATA, FDATA [])
Specific: The specific interface names are S_QDDER and D_QDDER.
FORTRAN 77 Interface
Single: QDDER(IDERIV, X, NDATA, XDATA, FDATA, CHECK)
Double: The double precision function name is DQDDER.
Description
The function QDDER interpolates a table of values, using quadratic polynomials, returning an approximation to the derivative of the tabulated function. Let (xifi) 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+1fi+1). The number returned by QDDER is q(j)(x), where j = IDERIV.
Comments
1. Informational error
Type
Code
Description
4
3
The XDATA values must be strictly increasing.
2. Because quadratic interpolation is used, if the order of the derivative is greater than two, then the returned value is zero.
Example
In this example, the value of sin x and its derivatives are approximated at π/4 by using QDDER on a table of 33 equally spaced values.
 
USE IMSL_LIBRARIES
 
IMPLICIT NONE
INTEGER NDATA
PARAMETER (NDATA=33)
!
INTEGER I, IDERIV, NOUT
REAL COS, F, F1, F2, FDATA(NDATA), H, PI,&
QT, SIN, X, XDATA(NDATA)
LOGICAL CHECK
INTRINSIC COS, SIN
! Define function and derivatives
F(X) = SIN(X)
F1(X) = COS(X)
F2(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
! Check XDATA
CHECK = .TRUE.
! Get output unit number
CALL UMACH (2, NOUT)
! Write heading
WRITE (NOUT,99998)
! Evaluate quadratic at PI/4
IDERIV = 0
QT = QDDER(IDERIV,X,XDATA,FDATA, CHECK=CHECK)
WRITE (NOUT,99999) X, IDERIV, F(X), QT, (F(X)-QT)
CHECK = .FALSE.
! Evaluate first derivative at PI/4
IDERIV = 1
QT = QDDER(IDERIV,X,XDATA,FDATA)
WRITE (NOUT,99999) X, IDERIV, F1(X), QT, (F1(X)-QT)
! Evaluate second derivative at PI/4
IDERIV = 2
QT = QDDER(IDERIV,X,XDATA,FDATA, CHECK=CHECK)
WRITE (NOUT,99999) X, IDERIV, F2(X), QT, (F2(X)-QT)
!
99998 FORMAT (33X, 'IDER', /, 15X, 'X', 6X, 'IDER', 6X, 'F (X)',&
5X, 'QDDER', 6X, 'ERROR', //)
99999 FORMAT (7X, F10.3, I8, 3F12.3/)
END
Output
 
IDER
X IDER F (X) QDDER ERROR
 
0.785 0 0.707 0.707 0.000
 
0.785 1 0.707 0.707 0.000
 
0.785 2 -0.707 -0.704 -0.003