/* code computes a derivative using both the forward step and central difference algorithms */ #include #include #include #include using namespace std; double f (double x, void * params) { return pow (x, 1.5); // <----- CHANGE ME } int main () { gsl_function F; double result, abserr; F.function = &f; // no touch F.params = 0; // no touch cout << "f(x) = x^(3/2)" << endl; gsl_deriv_central (&F, 2.0, 1e-8, &result, &abserr); cout << "x = 2.0" << endl; cout << "f'(x) = " << setprecision(11)<< result << " +/- " << abserr << endl; cout << "exact = " << setprecision(11) << 1.5 * sqrt(2.0) << endl << endl; 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; }