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

テクノロジアルゴリズム

この問題は2025(R7)春 応用情報技術者 午前に出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

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

〔アルゴリズム〕

  • (1) x00x_0 \leftarrow 0x11x_1 \leftarrow 1 とする。
  • (2) x(x0+x1)/2x \leftarrow (x_0 + x_1) / 2 とする。
  • (3) x1x<0.001x_1 - x < 0.001 ならば xx の値を近似値として終了する。
  • (4) f(x)0f(x) \geqq 0 ならば x1xx_1 \leftarrow x として,そうでなければ x0xx_0 \leftarrow x とする。
  • (5) (2)に戻る。

解答・解説を読む

正解: 選択肢

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

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

終了条件は x1x<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回の場合も同様に誤りです。