Next: Numerical Differentiation References, Previous: Numerical Differentiation functions, Up: Numerical Differentiation [Index]
The following code estimates the derivative of the function 
f(x) = x^{3/2} 
at x=2 and at x=0.  The function f(x) is
undefined for x<0 so the derivative at x=0 is computed
using gsl_deriv_forward.
#include <stdio.h>
#include <gsl/gsl_math.h>
#include <gsl/gsl_deriv.h>
double f (double x, void * params)
{
  (void)(params); /* avoid unused parameter warning */
  return pow (x, 1.5);
}
int
main (void)
{
  gsl_function F;
  double result, abserr;
  F.function = &f;
  F.params = 0;
  printf ("f(x) = x^(3/2)\n");
  gsl_deriv_central (&F, 2.0, 1e-8, &result, &abserr);
  printf ("x = 2.0\n");
  printf ("f'(x) = %.10f +/- %.10f\n", result, abserr);
  printf ("exact = %.10f\n\n", 1.5 * sqrt(2.0));
  gsl_deriv_forward (&F, 0.0, 1e-8, &result, &abserr);
  printf ("x = 0.0\n");
  printf ("f'(x) = %.10f +/- %.10f\n", result, abserr);
  printf ("exact = %.10f\n", 0.0);
  return 0;
}
Here is the output of the program,
$ ./a.out
f(x) = x^(3/2) x = 2.0 f'(x) = 2.1213203120 +/- 0.0000005006 exact = 2.1213203436 x = 0.0 f'(x) = 0.0000000160 +/- 0.0000000339 exact = 0.0000000000