7 const gsl_multimin_fdfminimizer_type *T;
8 gsl_multimin_fdfminimizer *s;
10 /* Position of the minimum (1,2), scale factors
12 double par[5] = { 1.0, 2.0, 10.0, 20.0, 30.0 };
15 gsl_multimin_function_fdf my_func;
20 my_func.fdf = &my_fdf;
21 my_func.params = ∥
23 /* Starting point, x = (5,7) */
24 x = gsl_vector_alloc (2);
25 gsl_vector_set (x, 0, 5.0);
26 gsl_vector_set (x, 1, 7.0);
28 T = gsl_multimin_fdfminimizer_conjugate_fr;
29 s = gsl_multimin_fdfminimizer_alloc (T, 2);
31 gsl_multimin_fdfminimizer_set (s, &my_func, x, 0.01, 1e-4);
36 status = gsl_multimin_fdfminimizer_iterate (s);
41 status = gsl_multimin_test_gradient (s->gradient, 1e-3);
43 if (status == GSL_SUCCESS)
44 printf ("Minimum found at:\n");
46 printf ("%5d %.5f %.5f %10.5f\n", iter,
47 gsl_vector_get (s->x, 0),
48 gsl_vector_get (s->x, 1),
52 while (status == GSL_CONTINUE && iter < 100);
54 gsl_multimin_fdfminimizer_free (s);