質問: x2 - 2 は関数として定義せよ。上位の方から 4 桁目まで正しい値が出たらループを止めるようにする。」 というものなのですが、この「2分法」というやり方もよく分かりません。 プログラムの作成方法と併せて教えて頂けると幸いです。
回答: こんな感じでしょうか? #include /* 関数 f(x) */ double f(double x) { return x*x-2.0; } /* 二分法 初期値 x1= eps) { x = (x1+x2)/2.0; /* 中点計算 */ if (f(x1)*f(x) > 0.0) { /* 同符号か判定 */ x1 = x; } else { x2 = x; } } return (x1+x2)/2.0; } int main(void) { double eps=0.00001; printf("%lf %lf\n",bisec(-2,0,eps), bisec(0,2,eps)); return 0; }