|
Packit |
67cb25 |
const size_t nelson_N = 128;
|
|
Packit |
67cb25 |
const size_t nelson_P = 3;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* double nelson_x0[3] = { 2, 0.0001, -0.01}; */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double nelson_x0[3] = { 2.5 , 0.000000005, -0.01};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double nelson_x[3] = {
|
|
Packit |
67cb25 |
2.5906836021E+00,
|
|
Packit |
67cb25 |
5.6177717026E-09,
|
|
Packit |
67cb25 |
-5.7701013174E-02
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double nelson_sumsq = 3.7976833176E+00;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double nelson_sigma[3] = {
|
|
Packit |
67cb25 |
1.9149996413E-02,
|
|
Packit |
67cb25 |
6.1124096540E-09,
|
|
Packit |
67cb25 |
3.9572366543E-03
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double nelson_F[128][3] = {
|
|
Packit |
67cb25 |
{ 15.00E0, 1E0, 180E0},
|
|
Packit |
67cb25 |
{ 17.00E0, 1E0, 180E0},
|
|
Packit |
67cb25 |
{ 15.50E0, 1E0, 180E0},
|
|
Packit |
67cb25 |
{ 16.50E0, 1E0, 180E0},
|
|
Packit |
67cb25 |
{ 15.50E0, 1E0, 225E0},
|
|
Packit |
67cb25 |
{ 15.00E0, 1E0, 225E0},
|
|
Packit |
67cb25 |
{ 16.00E0, 1E0, 225E0},
|
|
Packit |
67cb25 |
{ 14.50E0, 1E0, 225E0},
|
|
Packit |
67cb25 |
{ 15.00E0, 1E0, 250E0},
|
|
Packit |
67cb25 |
{ 14.50E0, 1E0, 250E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 1E0, 250E0},
|
|
Packit |
67cb25 |
{ 11.00E0, 1E0, 250E0},
|
|
Packit |
67cb25 |
{ 14.00E0, 1E0, 275E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 1E0, 275E0},
|
|
Packit |
67cb25 |
{ 14.00E0, 1E0, 275E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 1E0, 275E0},
|
|
Packit |
67cb25 |
{ 14.00E0, 2E0, 180E0},
|
|
Packit |
67cb25 |
{ 16.00E0, 2E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 2E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.50E0, 2E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 2E0, 225E0},
|
|
Packit |
67cb25 |
{ 13.50E0, 2E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 2E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 2E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 2E0, 250E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 2E0, 250E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 2E0, 250E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 2E0, 250E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 2E0, 275E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 2E0, 275E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 2E0, 275E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 2E0, 275E0},
|
|
Packit |
67cb25 |
{ 13.50E0, 4E0, 180E0},
|
|
Packit |
67cb25 |
{ 17.50E0, 4E0, 180E0},
|
|
Packit |
67cb25 |
{ 17.50E0, 4E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.50E0, 4E0, 180E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 4E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 4E0, 225E0},
|
|
Packit |
67cb25 |
{ 15.00E0, 4E0, 225E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 4E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 4E0, 250E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 4E0, 250E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 4E0, 250E0},
|
|
Packit |
67cb25 |
{ 13.50E0, 4E0, 250E0},
|
|
Packit |
67cb25 |
{ 10.00E0, 4E0, 275E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 4E0, 275E0},
|
|
Packit |
67cb25 |
{ 11.00E0, 4E0, 275E0},
|
|
Packit |
67cb25 |
{ 9.50E0, 4E0, 275E0},
|
|
Packit |
67cb25 |
{ 15.00E0, 8E0, 180E0},
|
|
Packit |
67cb25 |
{ 15.00E0, 8E0, 180E0},
|
|
Packit |
67cb25 |
{ 15.50E0, 8E0, 180E0},
|
|
Packit |
67cb25 |
{ 16.00E0, 8E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 8E0, 225E0},
|
|
Packit |
67cb25 |
{ 10.50E0, 8E0, 225E0},
|
|
Packit |
67cb25 |
{ 13.50E0, 8E0, 225E0},
|
|
Packit |
67cb25 |
{ 14.00E0, 8E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 8E0, 250E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 8E0, 250E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 8E0, 250E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 8E0, 250E0},
|
|
Packit |
67cb25 |
{ 6.50E0, 8E0, 275E0},
|
|
Packit |
67cb25 |
{ 5.50E0, 8E0, 275E0},
|
|
Packit |
67cb25 |
{ 6.00E0, 8E0, 275E0},
|
|
Packit |
67cb25 |
{ 6.00E0, 8E0, 275E0},
|
|
Packit |
67cb25 |
{ 18.50E0, 16E0, 180E0},
|
|
Packit |
67cb25 |
{ 17.00E0, 16E0, 180E0},
|
|
Packit |
67cb25 |
{ 15.30E0, 16E0, 180E0},
|
|
Packit |
67cb25 |
{ 16.00E0, 16E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 16E0, 225E0},
|
|
Packit |
67cb25 |
{ 14.00E0, 16E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 16E0, 225E0},
|
|
Packit |
67cb25 |
{ 11.00E0, 16E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 16E0, 250E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 16E0, 250E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 16E0, 250E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 16E0, 250E0},
|
|
Packit |
67cb25 |
{ 6.00E0, 16E0, 275E0},
|
|
Packit |
67cb25 |
{ 6.00E0, 16E0, 275E0},
|
|
Packit |
67cb25 |
{ 5.00E0, 16E0, 275E0},
|
|
Packit |
67cb25 |
{ 5.50E0, 16E0, 275E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 32E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 32E0, 180E0},
|
|
Packit |
67cb25 |
{ 16.00E0, 32E0, 180E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 32E0, 180E0},
|
|
Packit |
67cb25 |
{ 11.00E0, 32E0, 225E0},
|
|
Packit |
67cb25 |
{ 9.50E0, 32E0, 225E0},
|
|
Packit |
67cb25 |
{ 11.00E0, 32E0, 225E0},
|
|
Packit |
67cb25 |
{ 11.00E0, 32E0, 225E0},
|
|
Packit |
67cb25 |
{ 11.00E0, 32E0, 250E0},
|
|
Packit |
67cb25 |
{ 10.00E0, 32E0, 250E0},
|
|
Packit |
67cb25 |
{ 10.50E0, 32E0, 250E0},
|
|
Packit |
67cb25 |
{ 10.50E0, 32E0, 250E0},
|
|
Packit |
67cb25 |
{ 2.70E0, 32E0, 275E0},
|
|
Packit |
67cb25 |
{ 2.70E0, 32E0, 275E0},
|
|
Packit |
67cb25 |
{ 2.50E0, 32E0, 275E0},
|
|
Packit |
67cb25 |
{ 2.40E0, 32E0, 275E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 48E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.50E0, 48E0, 180E0},
|
|
Packit |
67cb25 |
{ 16.50E0, 48E0, 180E0},
|
|
Packit |
67cb25 |
{ 13.60E0, 48E0, 180E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 48E0, 225E0},
|
|
Packit |
67cb25 |
{ 10.50E0, 48E0, 225E0},
|
|
Packit |
67cb25 |
{ 13.50E0, 48E0, 225E0},
|
|
Packit |
67cb25 |
{ 12.00E0, 48E0, 225E0},
|
|
Packit |
67cb25 |
{ 7.00E0, 48E0, 250E0},
|
|
Packit |
67cb25 |
{ 6.90E0, 48E0, 250E0},
|
|
Packit |
67cb25 |
{ 8.80E0, 48E0, 250E0},
|
|
Packit |
67cb25 |
{ 7.90E0, 48E0, 250E0},
|
|
Packit |
67cb25 |
{ 1.20E0, 48E0, 275E0},
|
|
Packit |
67cb25 |
{ 1.50E0, 48E0, 275E0},
|
|
Packit |
67cb25 |
{ 1.00E0, 48E0, 275E0},
|
|
Packit |
67cb25 |
{ 1.50E0, 48E0, 275E0},
|
|
Packit |
67cb25 |
{ 13.00E0, 64E0, 180E0},
|
|
Packit |
67cb25 |
{ 12.50E0, 64E0, 180E0},
|
|
Packit |
67cb25 |
{ 16.50E0, 64E0, 180E0},
|
|
Packit |
67cb25 |
{ 16.00E0, 64E0, 180E0},
|
|
Packit |
67cb25 |
{ 11.00E0, 64E0, 225E0},
|
|
Packit |
67cb25 |
{ 11.50E0, 64E0, 225E0},
|
|
Packit |
67cb25 |
{ 10.50E0, 64E0, 225E0},
|
|
Packit |
67cb25 |
{ 10.00E0, 64E0, 225E0},
|
|
Packit |
67cb25 |
{ 7.27E0, 64E0, 250E0},
|
|
Packit |
67cb25 |
{ 7.50E0, 64E0, 250E0},
|
|
Packit |
67cb25 |
{ 6.70E0, 64E0, 250E0},
|
|
Packit |
67cb25 |
{ 7.60E0, 64E0, 250E0},
|
|
Packit |
67cb25 |
{ 1.50E0, 64E0, 275E0},
|
|
Packit |
67cb25 |
{ 1.00E0, 64E0, 275E0},
|
|
Packit |
67cb25 |
{ 1.20E0, 64E0, 275E0},
|
|
Packit |
67cb25 |
{ 1.20E0, 64E0, 275E0}
|
|
Packit |
67cb25 |
};
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int
|
|
Packit |
67cb25 |
nelson_f (const gsl_vector * x, void *params, gsl_vector * f)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double b[3];
|
|
Packit |
67cb25 |
size_t i;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < 3; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
b[i] = gsl_vector_get(x, i);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < 128; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double x1 = nelson_F[i][1];
|
|
Packit |
67cb25 |
double x2 = nelson_F[i][2];
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
double y = b[0] - b[1] * x1 * (b[2]*x2 < -100) ? 0.0 : exp(-b[2] * x2);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_vector_set (f, i, log(nelson_F[i][0]) - y);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
return GSL_SUCCESS;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int
|
|
Packit |
67cb25 |
nelson_df (const gsl_vector * x, void *params, gsl_matrix * df)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double b[3];
|
|
Packit |
67cb25 |
size_t i;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < 3; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
b[i] = gsl_vector_get(x, i);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < 128; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
double x1 = nelson_F[i][1];
|
|
Packit |
67cb25 |
double x2 = nelson_F[i][2];
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_matrix_set (df, i, 0, -1.0);
|
|
Packit |
67cb25 |
gsl_matrix_set (df, i, 1, x1 * exp(-b[2] * x2));
|
|
Packit |
67cb25 |
gsl_matrix_set (df, i, 2, -b[1] * x1 * x2 * exp(-b[2] * x2));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
return GSL_SUCCESS;
|
|
Packit |
67cb25 |
}
|