Go to the first, previous, next, last section, table of contents.

Example

The following code estimates the derivative of the function @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 gsl_diff_forward.

#include <stdio.h>
#include <gsl/gsl_math.h>
#include <gsl/gsl_diff.h>

double f (double x, void * params)
{
  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_diff_central (&F, 2.0, &result, &abserr);
  printf("x = 2.0\n");
  printf("f'(x) = %.10f +/- %.5f\n", result, abserr);
  printf("exact = %.10f\n\n", 1.5 * sqrt(2.0));

  gsl_diff_forward (&F, 0.0, &result, &abserr);
  printf("x = 0.0\n");
  printf("f'(x) = %.10f +/- %.5f\n", result, abserr);
  printf("exact = %.10f\n", 0.0);

  return 0;
}

Here is the output of the program,

$ ./demo 
f(x) = x^(3/2)

x = 2.0
f'(x) = 2.1213203435 +/- 0.01490
exact = 2.1213203436

x = 0.0
f'(x) = 0.0012172897 +/- 0.05028
exact = 0.0000000000

Go to the first, previous, next, last section, table of contents.