令和7年度 春期 応用情報技術者試験 午前 問2

0≦x≦10 \leqq x \leqq 1 の範囲で単調に増加する連続関数 f(x)f(x) が f(0)<0≦f(1)f(0) < 0 \leqq f(1) を満たすときに,区間内で f(x)=0f(x) = 0 である xx の値を近似的に求めるアルゴリズムにおいて,(2)は何回実行されるか。

〔アルゴリズム〕

  • (1) x0←0x_0 \leftarrow 0,x1←1x_1 \leftarrow 1 とする。
  • (2) x←(x0+x1)/2x \leftarrow (x_0 + x_1) / 2 とする。
  • (3) x1−x<0.001x_1 - x < 0.001 ならば xx の値を近似値として終了する。
  • (4) f(x)≧0f(x) \geqq 0 ならば x1←xx_1 \leftarrow x として,そうでなければ x0←xx_0 \leftarrow x とする。
  • (5) (2)に戻る。
解答・解説

正解: ア. 10

このアルゴリズムは 二分法(バイセクション法) と呼ばれる、方程式 f(x)=0f(x) = 0 の解を近似的に求める手法です。

初期状態として、区間幅は x1−x0=1−0=1x_1 - x_0 = 1 - 0 = 1 です。
(2)の処理で xx を区間の中点とするため、(4)を通って次のループに進むごとに区間幅は半分になります。
したがって、kk 回目の(2)が実行された直後の (3)の判定式における x1−xx_1 - x(現在の区間幅の半分)は、(1/2)k(1/2)^k となります。

終了条件は x1−x<0.001x_1 - x < 0.001 すなわち (1/2)k<1/1000(1/2)^k < 1/1000 です。
これを満たす最小の kk を求めます。

  • 29=5122^9 = 512
  • 210=10242^{10} = 1024

よって、条件を満たす最小の整数は k=10k=10 です。
したがって、(2)は 10 回実行されます。

各選択肢の解説

  • ア: 正解です。10回目の実行で判定値が 1/10241/1024 となり、0.0010.001 を下回るためアルゴリズムは終了します。
  • イ: 実行回数が20回の場合、判定値は 1/2201/2^{20} となり 0.0010.001 をはるかに下回ります。10回目で既に終了条件を満たすため誤りです。
  • ウ: 実行回数が100回の場合、終了条件に達した時点でアルゴリズムは終了するため誤りです。
  • エ: 実行回数が1,000回の場合も同様に誤りです。

Spineチーム