/* steepest_descent.c -- the dumb steepest descent algorithm */ #include #include #include typedef struct { double dummy; } steepest_descent_state_t; int steepest_descent_alloc(void *vstate, size_t n) { return GSL_SUCCESS; } int steepest_descent_restart(void *vstate, size_t n) { return GSL_SUCCESS; } void steepest_descent_free(void *vstate) { /* nothing */ } int steepest_descent_direction(void *state,gsl_multimin_fdf_history *h ,gsl_vector * dir) { size_t i; for(i = 0; isize; i++) { gsl_vector_set(dir,i,-gsl_vector_get(h->g,i)); } return GSL_SUCCESS; } static const gsl_multimin_fdf_minimizer_type steepest_descent_type = {"steepest_descent", /* name */ sizeof (steepest_descent_state_t), &steepest_descent_alloc, &steepest_descent_restart, &steepest_descent_direction, &steepest_descent_free}; const gsl_multimin_fdf_minimizer_type *gsl_multimin_fdf_minimizer_steepest_descent = &steepest_descent_type;