[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-gsl] Numerical Gradient?
From: |
David Doria |
Subject: |
[Help-gsl] Numerical Gradient? |
Date: |
Wed, 5 Mar 2008 17:19:14 -0500 |
I have a function f() that is not analytic and therefore I need to find a
numerical gradient. However to initialize a gsl_multimin_function_fdf, I
still need a function my_df that simply returns the value of the gradient at
the specified point.
For testing, lets try it with a function that we COULD have taken a normal
gradient of (this example ships with the package)
double my_f (const gsl_vector *v, void *params)
{
double x, y;
double *dp = (double *)params;
x = gsl_vector_get(v, 0);
y = gsl_vector_get(v, 1);
return 10.0 * (x - dp[0]) * (x - dp[0]) +
20.0 * (y - dp[1]) * (y - dp[1]) + 30.0;
}
and its gradient:
void my_df (const gsl_vector *v, void *params, gsl_vector *df)
{
double x, y;
double *dp = (double *)params;
x = gsl_vector_get(v, 0);
y = gsl_vector_get(v, 1);
gsl_vector_set(df, 0, 20.0 * (x - dp[0]));
gsl_vector_set(df, 1, 40.0 * (y - dp[1]));
}
but instead i would like: (and I imagine I should keep the same function
form (ie. same parameters))
void my_df (const gsl_vector *v, void *params, gsl_vector *df)
{
NUMERICAL GRADIENT OF f at v;
}
Is there a function I can call that will do that?
--
Thanks,
David
- [Help-gsl] Numerical Gradient?,
David Doria <=