根据定义设计函数f(x) = x^2 - 4*x + 6
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
double f(double x){ // x^2 - 4*x + 6
return x * x - 4 * x + 6;
}
int main(){
double aL = 0;
double aR = 4;
while(aR - aL > 1e-3){
double mid = (aR + aL) * 1.0 / 2;
double a1 = mid - 1e-4;
double a2 = mid + 1e-4;
double ita0 = aR - aL;
printf("%.4lf %.4lf %.4lf %.4lf\n",aL, a1, a2, aR);
if(f(a1) < f(a2)){
aR = a2;
}else{
aL = a1;
}
double ita1 = aR - aL;
printf("itaK = %.2lf\n", ita1 / ita0);
}
printf("%.2lf\n", (aL + aR) / 2);
}
其中,itaK为区间缩减率