CMP EMBEDDED.COM

Login | Register     Welcome Guest  
HOME DESIGN PRODUCTS COLUMNS E-LEARNING CONFERENCES CODE FORUMS/BLOGS NEWSLETTERS CONTACT FEATURES RSS RSS


Listing 4 Automating range reduction

/* Minimization by repetitive step reduction 
* divides the initial interval into n segments 
* repeats k times 
* final resolution is n^-k 
*/
double minimize(double (*f)(double), double x0, 
double x1, long n, int k){
static double xmin, ymin;
static double dx = (x1 - x0)/n;
double x, y;
for(int i=0; i<k; i++){
xmin = x0;
ymin = f(x0);
x = x0 + dx;
y = f(x);
while((x < x1) &&
(y <= ymin)){
ymin = y;
xmin = x;
x += dx;
y = f(x);
}
x0 = max(x0, x - 2*dx);
x1 = min(x1, x);
dx = dx/10;
}
return xmin;
}
void main(void){
double xmin;
xmin = minimize(f, 0, 1, 10, 6);
cout << xmin << ' ' << f(xmin) << endl;
}

Back


Embedded.com Career Center
Looking for a new job?
SEARCH JOBS

Browse all jobs

SPONSOR
RECENT JOB POSTINGS





 :