2 #include <gsl/gsl_errno.h>
3 #include <gsl/gsl_math.h>
4 #include <gsl/gsl_min.h>
6 double fn1 (double x, void * params)
15 int iter = 0, max_iter = 100;
16 const gsl_min_fminimizer_type *T;
17 gsl_min_fminimizer *s;
18 double m = 2.0, m_expected = M_PI;
19 double a = 0.0, b = 6.0;
25 T = gsl_min_fminimizer_brent;
26 s = gsl_min_fminimizer_alloc (T);
27 gsl_min_fminimizer_set (s, &F, m, a, b);
29 printf ("using %s method\n",
30 gsl_min_fminimizer_name (s));
32 printf ("%5s [%9s, %9s] %9s %10s %9s\n",
33 "iter", "lower", "upper", "min",
36 printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
38 m, m - m_expected, b - a);
43 status = gsl_min_fminimizer_iterate (s);
45 m = gsl_min_fminimizer_x_minimum (s);
46 a = gsl_min_fminimizer_x_lower (s);
47 b = gsl_min_fminimizer_x_upper (s);
50 = gsl_min_test_interval (a, b, 0.001, 0.0);
52 if (status == GSL_SUCCESS)
53 printf ("Converged:\n");
55 printf ("%5d [%.7f, %.7f] "
58 m, m - m_expected, b - a);
60 while (status == GSL_CONTINUE && iter < max_iter);
62 gsl_min_fminimizer_free (s);