01: #include <stdio.h> 02: 03: int main(void){ 04: double x, dx, max_fx, max_x, new_fx; 05: int change_max; //0:最大値を更新 1:更新しない 06: 07: x = -100.0; // xの初期値 08: dx = 0.001; // xの計算のきざみ幅 09: 10: max_fx = -3.0*x*x + 9.0*x - 6.0; // とりあえずの最大値 11: 12: 13: do{ 14: x+=dx; // 次の x 15: new_fx = -3.0*x*x + 9.0*x - 6.0; // f(x)の計算 16: 17: //---- 最大値か否かの検査 -------------- 18: if(max_fx < new_fx){ // 新たに最大値発見 19: max_fx = new_fx; 20: max_x = x; 21: change_max = 0; 22: }else{ // 最大値でない場合 23: change_max = 1; 24: } 25: 26: }while(change_max==0); 27: 28: 29: printf("x = %fのときf(x)=%fで最大です\n", max_x, max_fx); 30: 31: return 0; 32: }