Hi Francisco, I think you're missing some necessary header files Include the header files listed in the example in the documentation should work:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <gsl/gsl_errno.h> #include <gsl/gsl_siman.h> See: http://www.gnu.org/software/gsl/manual/gsl-ref.html#Examples-with-Simulated-Annealing With that I could compile and run your program fine. Not sure about all the c++ headers you're including, but perhaps you're missing the links to them? If it is still not working let us know how you are compiling. -Carl On Tue, Feb 2, 2010 at 6:43 AM, Francisco Marcelo Rocha <f.marcelo.ro...@gmail.com> wrote: > Dear help-gsl, > > I have included the header of the simple example of simulated annealing > result in the following libraries: the following libraries iostream, fstream > and cstdio. When compiled the example occurred the following error: > segmentation fault. How can I fix the program? > and how can I write the result of the program in a file using fstream? The > example used is > > # include<cstdio> > # include<iostream> > # include<cmath> > # include<cstdlib> > # include<cstring> > # include<fstream> > #include <gsl/gsl_errno.h> > # include<gsl/gsl_siman.h> > /* set up parameters for this simulated annealing run */ > /* how many points do we try before stepping */ > #define N_TRIES 200 > /* how many iterations for each T? */ > #define ITERS_FIXED_T 1000 > /* max step size in random walk */ > #define STEP_SIZE 1.0 > /* Boltzmann constant */ > #define K 1.0 > /* initial temperature */ > #define T_INITIAL 0.008 > /* damping factor for temperature */ > #define MU_T 1.003 > #define T_MIN 2.0e-6 > > using namespace std; > > gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, > K, T_INITIAL, MU_T, T_MIN}; > /* now some functions to test in one dimension */ > double E1(void *xp) > { > double x = * ((double *) xp); > return exp(-pow((x-1.0),2.0))*sin(8*x); > } > > double M1(void *xp, void *yp) > { > double x = *((double *) xp); > double y = *((double *) yp); > return fabs(x - y); > } > > void S1(const gsl_rng * r, void *xp, double step_size) > { > double old_x = *((double *) xp); > double new_x; > double u = gsl_rng_uniform(r); > new_x = u * 2 * step_size - step_size + old_x; > memcpy(xp, &new_x, sizeof(new_x)); > } > > void P1(void *xp)// ostream & simuanel > { > // printf ("%12g", *((double *) xp)); > // cout << *((double *) xp) << endl; > // simuanel << *((double *) xp) << endl; > } > > > int main(int argc, char *argv[]) > { > const gsl_rng_type * T; > gsl_rng * r; > double x_initial = 15.5; > gsl_rng_env_setup(); > T = gsl_rng_default; > r = gsl_rng_alloc(T); > > > > gsl_siman_solve(r, &x_initial, E1, S1, M1, P1, > NULL, NULL, NULL, > sizeof(double), params); > gsl_rng_free (r); > > > > return 0; > } > > Sincerely > > > > -- > Francisco Marcelo Monteiro da Rocha > E-mail: f.marcelo.ro...@gmail.com > tel: 11 6397-4748 > _______________________________________________ > Help-gsl mailing list > Help-gsl@gnu.org > http://lists.gnu.org/mailman/listinfo/help-gsl > -- Carl Boettiger Population Biology, UC Davis http://two.ucdavis.edu/~cboettig _______________________________________________ Help-gsl mailing list Help-gsl@gnu.org http://lists.gnu.org/mailman/listinfo/help-gsl