基本情報技術者 2015年 秋期 午前(科目A) 問03
問題文
関数は、引数も戻り値も実数型である。この関数を使った、①〜⑤から成る手続きを考える。
手続きの実行を開始してから②~⑤を十分に繰り返した後に、③で表示される値に変化がなくなった。このとき成立する関係式はどれか。
選択肢
ア:
イ:
ウ:
エ:(正解)
反復で安定する値の関係【午前2 解説】
要点まとめ
- 結論: 反復実行で最終的に変化が止まった値 は関数の不動点であり、必ず が成立します。
- 根拠: 手続きが で定常化したとは次の一回の適用でも値が変わらないことを意味し、そのまま代入して が得られます。
- 差がつくポイント: 収束したこと(値が変化しないこと)が前提であり、収束しない場合や複数不動点の状況は別途検討が必要です。
正解の理由
手続きを一度の反復ごとに「入力 → 出力 = f(入力)」と考えると、ある時点で表示される が以降変化しないということは、その次の出力も同じ になることを意味します。すなわち入力に を与えたときの出力が であるため が成り立ちます。よって正解は エ です。
よくある誤解
- 「初期値 が直接関係する」と考える誤解:反復の途中で に到達して定常化しているなら、出発点 は関係せず不動点条件が成り立ちます。
- 「収束=存在の保証」と混同する誤り:収束して初めて が確認できるので、反復が収束するかは別途条件を確認する必要があります。
- 「連続性や微分条件が必要」と誤解する例:今回の問題では手続きが値を変えなくなったという事実だけで が導け、連続性は不要です。
解法ステップ
- 手続きを反復として数式化する。初期値を 、一般項を と置く。
- 問題文より、ある時点で表示される値が変化しなくなる。すなわちある に対して 。
- 定義 に を代入すると となる。
- よって求める関係は (選択肢エ)である。
選択肢別の誤答解説
- ア: — 誤り。これは初回の一回だけの関係を表すが、安定化後の性質を示していません。最終的に変化が止まるという条件からは導けません。
- イ: — 誤り。出力が 0 になるという情報は与えられておらず、定常性は「同じ値が続く」ことを意味するだけです。
- ウ: — 誤り。出発点 に戻る必要はなく、定常化は次の出力が同じであることを意味します。
- エ: f(y)=y — 正解。変化がなくなるとは次の適用でも同じ値になることを意味し、これが不動点の定義です。
補足コラム
反復による不動点(固定点)は数値計算やアルゴリズムで頻出します。反復が必ず収束するための代表的な条件としては「収縮写像(Banach の不動点定理)」があります。収縮写像であれば唯一の不動点が存在し、任意の初期値から反復がその不動点に収束します。例として の反復は多くの初期値から解 に収束します。
簡単な Python による反復例:
def iterate(f, a, max_iter=100, tol=1e-10):
x = a
for _ in range(max_iter):
y = f(x)
if abs(y - x) < tol:
return y # 定常化(不動点)を検出
x = y
return x
import math
fixed = iterate(math.cos, 1.0)
print(fixed) # ~0.739085...
FAQ
Q1: 「安定化した値が必ず になるのか」
A1: はい。以降変化しないとは次の出力も同じであることを意味するため、定義から が成り立ちます。
A1: はい。以降変化しないとは次の出力も同じであることを意味するため、定義から が成り立ちます。
Q2: 「収束した場合と一定になった場合は同じか」
A2: 問題文は「変化がなくなった」と明言しており、これは一定(定常)になったことを示します。収束(極限として値に近づく)とは概念が異なりますが、どちらの場合でも最終的な値は不動点になります(ただし収束の前提が必要です)。
A2: 問題文は「変化がなくなった」と明言しており、これは一定(定常)になったことを示します。収束(極限として値に近づく)とは概念が異なりますが、どちらの場合でも最終的な値は不動点になります(ただし収束の前提が必要です)。
Q3: 「不動点が複数ある場合、どの不動点に定常化するかは?」
A3: 初期値 や関数の性質(安定性)に依存します。収縮性があれば唯一の不動点へ収束しますが、一般には分岐します。
A3: 初期値 や関数の性質(安定性)に依存します。収縮性があれば唯一の不動点へ収束しますが、一般には分岐します。
関連キーワード: 固定点, 不動点, 反復法, 収束, 収縮写像, 漸近安定性, 反復写像, 関数の反復

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

