summaryrefslogtreecommitdiff
path: root/gsl-1.9/doc/diff.texi
diff options
context:
space:
mode:
Diffstat (limited to 'gsl-1.9/doc/diff.texi')
-rw-r--r--gsl-1.9/doc/diff.texi105
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