#include
#define N 2
double func(double x[]) {
double temp;
temp=x[1]-x[0]*x[0];
return 100*temp*temp+(1.0-x[0])*(1.0-x[0]);
}
int main () {
double func(double x[]);
double fminval,xmin[N],x0[N],rel_tol, abs_tol;
int numfuneval, status;
x0[0] = -1.2;
x0[1]=1.0;
/* Plot a 2 dimensional graph of the function
for which the minimum will be found */
double funcp(double x, y)
{
double temp;
temp=y-x*x;
return 100*temp*temp+(1.0-x)*(1.0-x);
}
fplotxyz(funcp, 0.9, 1.1, 0.9, 1.1, 50,50,"100*(x-y*y)*(x-y*y)+(1.0-x)*(1.0-x)","x","y","z");
status = fminimums(&fminval, xmin, func,x0);
printf("status = %d\n", status);
printf("fminval = %f\n", fminval);
printf("xmin[0] = %f\n", xmin[0]);
printf("xmin[1] = %f\n", xmin[1]);
rel_tol = 1.0e-3; /* not default value */
abs_tol = 1.0e-3; /* not default value */
numfuneval = 250; /* not default value */
status = fminimums(&fminval, xmin, func,x0,rel_tol, abs_tol,numfuneval);
printf("status = %d\n", status);
printf("fminval = %f\n", fminval);
printf("xmin[0] = %f\n", xmin[0]);
printf("xmin[1] = %f\n", xmin[1]);
}
status = 0
fminval = 0.000000
xmin[0] = 1.000000
xmin[1] = 1.000000
status = 0
fminval = 0.000600
xmin[0] = 0.975573
xmin[1] = 0.951548