過去問解きまくり研究所 ホーム

平成28年度 秋期 午前 問2

基礎理論

アルゴリズムに関する問題

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

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

答えと解説を見る

✓ これが正解ア10

解説

区間を半分にする操作が10回で0.001を下回ります。

このアルゴリズムは、答えが入っている区間を毎回まん中で切り、どちら側に答えがあるかを判定して区間を半分に詰めていく手順です。最初の区間は 0 から 1 までなので幅は 1、まん中を求める処理を 1 回通るごとに幅は 1/2 になり、n 回通れば 1/2 の n 乗になります。終了の条件は、そのとき着目している側の幅が 0.001 より小さくなることです。そこで 2 の累乗を並べると、2 の 9 乗は 512 なので 1/512 = 0.00195… でまだ条件を満たさず、2 の 10 乗は 1,024 なので 1/1,024 = 0.00097… となって初めて条件を満たします。よってまん中を求める処理は 10 回実行されます。半分にする繰返しの回数は 2 を底とする対数で決まるため、精度を 1 桁厳しくしても回数は 3 回か 4 回しか増えません。2 の 10 乗がおよそ 1,000 であることを覚えておくと、近似値を求めるこの型の問は暗算で片づきます。

ほかの選択肢はなぜ違うのか

この問題の用語

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)