4 double par[5] = {1.0, 2.0, 10.0, 20.0, 30.0};
6 const gsl_multimin_fminimizer_type *T =
7 gsl_multimin_fminimizer_nmsimplex;
8 gsl_multimin_fminimizer *s = NULL;
10 gsl_multimin_function minex_func;
17 x = gsl_vector_alloc (2);
18 gsl_vector_set (x, 0, 5.0);
19 gsl_vector_set (x, 1, 7.0);
21 /* Set initial step sizes to 1 */
22 ss = gsl_vector_alloc (2);
23 gsl_vector_set_all (ss, 1.0);
25 /* Initialize method and iterate */
28 minex_func.params = (void *)∥
30 s = gsl_multimin_fminimizer_alloc (T, 2);
31 gsl_multimin_fminimizer_set (s, &minex_func, x, ss);
36 status = gsl_multimin_fminimizer_iterate(s);
41 size = gsl_multimin_fminimizer_size (s);
42 status = gsl_multimin_test_size (size, 1e-2);
44 if (status == GSL_SUCCESS)
46 printf ("converged to minimum at\n");
49 printf ("%5d %10.3e %10.3ef f() = %7.3f size = %.3f\n",
51 gsl_vector_get (s->x, 0),
52 gsl_vector_get (s->x, 1),
55 while (status == GSL_CONTINUE && iter < 100);
59 gsl_multimin_fminimizer_free (s);