help-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-gsl] Help with multidimensional root finding


From: Laura Marinho
Subject: [Help-gsl] Help with multidimensional root finding
Date: Fri, 14 Nov 2014 10:22:34 -0700

Hello,

I have written a code to solve 5 non-linear coupled equations using gsl. I
have a few constants that are set in the beginning of the code and one
input parameter, rho, that is changed in a loop. The program works fine for
a given set of parameters (G300) but for a different one (GM4) it is
working only for small rho. I always use the solution found for rho for the
initial guess of rho+Delta_rho but I start receiving the "not making
progress towards the solution" error from a certain value of rho when using
the GM4 set of parameters.
In main, I have

    gsl_multiroot_function f = {&Walecka_f, n, &p};

    double x_init[5] = {gss_i, gww_i, grr_i, mun_i, mue_i};

    gsl_vector *x=gsl_vector_alloc(n);
    gsl_vector_set(x, 0, x_init[0]);
    gsl_vector_set(x, 1, x_init[1]);
    gsl_vector_set(x, 2, x_init[2]);
    gsl_vector_set(x, 3, x_init[3]);
    gsl_vector_set(x, 4, x_init[4]);

    T = gsl_multiroot_fsolver_hybrid;
    s = gsl_multiroot_fsolver_alloc(T, 5);
    gsl_multiroot_fsolver_set(s, &f, x);

    do
      {
    iter++;
    status = gsl_multiroot_fsolver_iterate (s);
    if (status)   /* check if solver is stuck */
      break;
    status = gsl_multiroot_test_residual (s->f, 1e-7);
      }
    while (status == GSL_CONTINUE && iter < 1000);

    printf ("status = %s\n", gsl_strerror (status));

I I have also attached the code so if anyone can help, I would really
appreciate it.
Thanks,

Laura

Attachment: Walecka.c
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]