diff options
Diffstat (limited to 'gsl-1.9/doc/diff.texi')
-rw-r--r-- | gsl-1.9/doc/diff.texi | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/gsl-1.9/doc/diff.texi b/gsl-1.9/doc/diff.texi new file mode 100644 index 0000000..ba11ebc --- /dev/null +++ b/gsl-1.9/doc/diff.texi @@ -0,0 +1,105 @@ +@cindex differentiation of functions, numeric +@cindex functions, numerical differentiation +@cindex derivatives, calculating numerically +@cindex numerical derivatives +@cindex slope, see numerical derivative + +The functions described in this chapter compute numerical derivatives by +finite differencing. An adaptive algorithm is used to find the best +choice of finite difference and to estimate the error in the derivative. +These functions are declared in the header file @file{gsl_deriv.h}. + +@menu +* Numerical Differentiation functions:: +* Numerical Differentiation Examples:: +* Numerical Differentiation References:: +@end menu + +@node Numerical Differentiation functions +@section Functions + +@deftypefun int gsl_deriv_central (const gsl_function * @var{f}, double @var{x}, double @var{h}, double * @var{result}, double * @var{abserr}) +This function computes the numerical derivative of the function @var{f} +at the point @var{x} using an adaptive central difference algorithm with +a step-size of @var{h}. The derivative is returned in @var{result} and an +estimate of its absolute error is returned in @var{abserr}. + +The initial value of @var{h} is used to estimate an optimal step-size, +based on the scaling of the truncation error and round-off error in the +derivative calculation. The derivative is computed using a 5-point rule +for equally spaced abscissae at @math{x-h}, @math{x-h/2}, @math{x}, +@math{x+h/2}, @math{x+h}, with an error estimate taken from the difference +between the 5-point rule and the corresponding 3-point rule @math{x-h}, +@math{x}, @math{x+h}. Note that the value of the function at @math{x} +does not contribute to the derivative calculation, so only 4-points are +actually used. +@end deftypefun + +@deftypefun int gsl_deriv_forward (const gsl_function * @var{f}, double @var{x}, double @var{h}, double * @var{result}, double * @var{abserr}) +This function computes the numerical derivative of the function @var{f} +at the point @var{x} using an adaptive forward difference algorithm with +a step-size of @var{h}. The function is evaluated only at points greater +than @var{x}, and never at @var{x} itself. The derivative is returned in +@var{result} and an estimate of its absolute error is returned in +@var{abserr}. This function should be used if @math{f(x)} has a +discontinuity at @var{x}, or is undefined for values less than @var{x}. + +The initial value of @var{h} is used to estimate an optimal step-size, +based on the scaling of the truncation error and round-off error in the +derivative calculation. The derivative at @math{x} is computed using an +``open'' 4-point rule for equally spaced abscissae at @math{x+h/4}, +@math{x+h/2}, @math{x+3h/4}, @math{x+h}, with an error estimate taken +from the difference between the 4-point rule and the corresponding +2-point rule @math{x+h/2}, @math{x+h}. +@end deftypefun + +@deftypefun int gsl_deriv_backward (const gsl_function * @var{f}, double @var{x}, double @var{h}, double * @var{result}, double * @var{abserr}) +This function computes the numerical derivative of the function @var{f} +at the point @var{x} using an adaptive backward difference algorithm +with a step-size of @var{h}. The function is evaluated only at points +less than @var{x}, and never at @var{x} itself. The derivative is +returned in @var{result} and an estimate of its absolute error is +returned in @var{abserr}. This function should be used if @math{f(x)} +has a discontinuity at @var{x}, or is undefined for values greater than +@var{x}. + +This function is equivalent to calling @code{gsl_deriv_forward} with a +negative step-size. +@end deftypefun + +@node Numerical Differentiation Examples +@section Examples + +The following code estimates the derivative of the function +@c{$f(x) = x^{3/2}$} +@math{f(x) = x^@{3/2@}} +at @math{x=2} and at @math{x=0}. The function @math{f(x)} is +undefined for @math{x<0} so the derivative at @math{x=0} is computed +using @code{gsl_deriv_forward}. + +@example +@verbatiminclude examples/diff.c +@end example + +@noindent +Here is the output of the program, + +@example +$ ./a.out +@verbatiminclude examples/diff.out +@end example + +@node Numerical Differentiation References +@section References and Further Reading + +The algorithms used by these functions are described in the following sources: + +@itemize @asis +@item +Abramowitz and Stegun, @cite{Handbook of Mathematical Functions}, +Section 25.3.4, and Table 25.5 (Coefficients for Differentiation). + +@item +S.D. Conte and Carl de Boor, @cite{Elementary Numerical Analysis: An +Algorithmic Approach}, McGraw-Hill, 1972. +@end itemize |