NAG Library Routine Document
D04BAF calculates a set of derivatives (up to order
) of a function at a point with respect to a single variable. A corresponding set of error estimates is also returned. Derivatives are calculated using an extension of the Neville algorithm. This routine differs from D04AAF
, in that the abscissae and corresponding function values must be calculated before this routine is called. The abscissae may be generated using D04BBF
||XVAL(21), FVAL(21), DER(14), EREST(14)
D04BAF provides a set of approximations:
to the derivatives:
of a real valued function
at a real abscissa
, together with a set of error estimates:
which hopefully satisfy:
are based on
and the corresponding function values
should be passed into D04BAF as the vectors XVAL
respectively. The step size
is derived from the abscissae in XVAL
. See Section 8
for a discussion of how the derived value of
may affect the results of D04BAF. The order in which the abscissae and function values are stored in XVAL
is irrelevant, provided that the function value at any given index corresponds to the value of the abscissa at the same index. Abscissae may be automatically generated using D04BBF
if desired. For each derivative D04BAF employs an extension of the Neville Algorithm (see Lyness and Moler (1969)
) to obtain a selection of approximations.
For example, for odd derivatives, this routine calculates a set of numbers:
each of which is an approximation to
. A specific approximation
is of polynomial degree
and is based on polynomial interpolation using function values
. In the absence of round-off error, the better approximations would be associated with the larger values of
. However, round-off error in function values has an increasingly contaminating effect for successively larger values of
. This routine proceeds to make a judicious choice between all the approximations in the following way.
For a specified value of
, and let
be such that
This routine returns:
is a safety factor which has been assigned the values:
on the basis of performance statistics.
The even order derivatives are calculated in a precisely analogous manner.
Lyness J N and Moler C B (1969) Generalised Romberg methods for integrals of derivatives Numer. Math. 14 1–14
- 1: XVAL() – REAL (KIND=nag_wp) arrayInput
: the abscissae at which the function has been evaluated, as described in Section 3
. These can be generated by calling D04BBF
. The order of the abscissae is irrelevant.
the values in XVAL
must span the set
- 2: FVAL() – REAL (KIND=nag_wp) arrayInput
On entry: must contain the function value at , for .
- 3: DER() – REAL (KIND=nag_wp) arrayOutput
On exit: the 14 derivative estimates.
- 4: EREST() – REAL (KIND=nag_wp) arrayOutput
On exit: the 14 error estimates for the derivatives.
- 5: IFAIL – INTEGERInput/Output
must be set to
. If you are unfamiliar with this parameter you should refer to Section 3.3
in the Essential Introduction for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value
is recommended. If the output of error messages is undesirable, then the value
is recommended. Otherwise, if you are not familiar with this parameter, the recommended value is
. When the value is used it is essential to test the value of IFAIL on exit.
unless the routine detects an error or a warning has been flagged (see Section 6
6 Error Indicators and Warnings
If on entry
, explanatory error messages are output on the current error message unit (as defined by X04AAF
Errors or warnings detected by the routine:
Either the derived
is below the acceptable tolerance, or the abscissae in XVAL
are not correctly spaced. You must ensure that the values of XVAL
cover the set
. The abscissae may be generated, in ascending order, using D04BBF
The accuracy of the results is problem dependent. An estimate of the accuracy of each result
is returned in
(see Sections 3
A basic feature of any floating point routine for numerical differentiation based on real function values on the real axis is that successively higher order derivative approximations are successively less accurate. It is expected that in most cases will be unusable. As an aid to this process, the sign of is set negative when the estimated absolute error is greater than the approximate derivative itself, i.e., when the approximate derivative may be so inaccurate that it may even have the wrong sign. It is also set negative in some other cases when information available to D04BAF indicates that the corresponding value of is questionable.
The actual values in EREST
depend on the accuracy of the function values, the properties of the machine arithmetic, the analytic properties of the function being differentiated and the step length
(see Section 8
). The only hard and fast rule is that for a given objective function and
, the values of
increase with increasing
. The limit of
is dictated by experience. Only very rarely can one obtain meaningful approximations for higher order derivatives on conventional machines.
The results depend very critically on the choice of the step length . The overall accuracy is diminished as becomes small (because of the effect of round-off error) and as becomes large (because the discretization error also becomes large). If this routine is used four or five times with different values of one can find a reasonably good value. A process in which the value of is successively halved (or doubled) is usually quite effective. Experience has shown that in cases in which the Taylor series for the objective function about has a finite radius of convergence , the choices of are not likely to lead to good results. In this case some function values lie outside the circle of convergence.
As mentioned, the order of the abscissae in XVAL
does not matter, provided the corresponding values of FVAL
are ordered identically. If the abscissae are generated by D04BBF
, then they will be in ascending order. In particular, the target abscissa
will be stored in
This example evaluates the derivatives of the polygamma function, calculated using S14AEF
, and compares the first
derivatives calculated to those found using S14AEF
9.1 Program Text
Program Text (d04bafe.f90)
9.2 Program Data
9.3 Program Results
Program Results (d04bafe.r)