multimin.c

来自「math library from gnu」· C语言 代码 · 共 59 行

C
59
字号
intmain (void){  size_t iter = 0;  int status;  const gsl_multimin_fdfminimizer_type *T;  gsl_multimin_fdfminimizer *s;  /* Position of the minimum (1,2), scale factors      10,20, height 30. */  double par[5] = { 1.0, 2.0, 10.0, 20.0, 30.0 };  gsl_vector *x;  gsl_multimin_function_fdf my_func;  my_func.n = 2;  my_func.f = &my_f;  my_func.df = &my_df;  my_func.fdf = &my_fdf;  my_func.params = &par;  /* Starting point, x = (5,7) */  x = gsl_vector_alloc (2);  gsl_vector_set (x, 0, 5.0);  gsl_vector_set (x, 1, 7.0);  T = gsl_multimin_fdfminimizer_conjugate_fr;  s = gsl_multimin_fdfminimizer_alloc (T, 2);  gsl_multimin_fdfminimizer_set (s, &my_func, x, 0.01, 1e-4);  do    {      iter++;      status = gsl_multimin_fdfminimizer_iterate (s);      if (status)        break;      status = gsl_multimin_test_gradient (s->gradient, 1e-3);      if (status == GSL_SUCCESS)        printf ("Minimum found at:\n");      printf ("%5d %.5f %.5f %10.5f\n", iter,              gsl_vector_get (s->x, 0),               gsl_vector_get (s->x, 1),               s->f);    }  while (status == GSL_CONTINUE && iter < 100);  gsl_multimin_fdfminimizer_free (s);  gsl_vector_free (x);  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?