平成28年度秋期 問2 / 80

平成28年度 秋期 応用情報技術者試験 午前 問2

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

〔アルゴリズム〕
(1) x₀ ← 0,x₁ ← 1 とする。
(2) x ← (x₀ + x₁) ÷ 2 とする。
(3) x₁ − x < 0.001 ならば x の値を近似値として終了する。
(4) f(x) ≧ 0 ならば x₁ ← x として,そうでなければ x₀ ← x とする。
(5) (2)に戻る。

キーボード:1〜4 で解答 → 次の問題 ← 前の問題

正解と解説を見る

正解:ア

このアルゴリズムは二分法です。(2)で区間の中点を求め,(4)で区間 [x₀, x₁] の幅を半分にしていきます。

最初の区間の幅は1なので,(2)を n 回目に実行した直後の x₁ − x は,区間幅の半分で
x₁ − x = 1 ÷ 2ⁿ
になります。(3)の終了条件は 1 ÷ 2ⁿ < 0.001,つまり 2ⁿ > 1,000 です。
2⁹ = 512,2¹⁰ = 1,024 なので,n = 10 で初めて条件を満たします。したがって(2)は10回実行されます。

  • ア: 10
    正しい。10回目の(2)の実行で x₁ − x = 1 ÷ 1,024 ≒ 0.00098 < 0.001 となり終了します。

  • イ: 20
    誤り。20回では 1 ÷ 2²⁰ となり,必要以上に区間が狭くなります。10回目の時点で終了します。

  • ウ: 100
    誤り。区間を0.001刻みで順に調べる場合の回数に近い値ですが,二分法では毎回幅が半分になるため,はるかに少ない回数で終了します。

  • エ: 1,000
    誤り。1 ÷ 0.001 = 1,000 ですが,これは区間を均等に1,000分割して順番に調べる場合の考え方です。


答え

ア: 10

出典:平成28年度 秋期 応用情報技術者試験 午前 問2

平成28年度秋期の他の問題