GSL 求解非线性方程

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
struct rparams
{
    size_t n;
};

int rosenbrock_f(const gsl_vector* x, void* params, gsl_vector* f)
{
    const double n = ((struct rparams*)params)->n;
    for(size_t i=0; i x_init = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
    size_t n = x_init.size();
    struct rparams p = { n };
    gsl_multiroot_function f = { &rosenbrock_f, n, &p };
//    gsl_function_struct g;
    gsl_vector* x = gsl_vector_alloc(n);
    for(size_t i=0; if, 1e-7);
    }

    for(size_t i=0; ix, i));
    }
    printf("\nstatus = %s\n", gsl_strerror(status));
    gsl_multiroot_fsolver_free(s);
    gsl_vector_free(x);
    return 0;
}

// 0.5236    2.6180    2.6180    2.6180    6.8068    6.8068    6.8068    8.9012   8.9012
// 0.5236    2.6180    2.6180    2.6180   13.0900    6.8068    6.8068    6.8068   8.9012
// 0.5236    2.6180    2.6180    2.6180   13.0900    6.8068    6.8068    2.6180   8.9012

你可能感兴趣的:(C++,算法,c++)