Open Source WEB

##(link2sicp "book-Z-H-11.html#%_thm_1.13" "Exercise 1.13")

解答例

[仮定]
φ = (1 + sqrt(5)) / 2
Fib(n) = if (n == 0)
         then 0
         else if (n == 1)
              then 1
              else Fib(n - 1) + Fib(n - 2)
[結論]
Fib(n) - 0.5 < φ^n / sqrt(5) < Fib(n) + 0.5
[証明]
ψ = (1 - sqrt(5)) / 2 とすると
Fib(n) = (φ^n - ψ^n) / sqrt(5)

∵ n = 0 のとき Fib(0) = 0 = (φ^0 - ψ^0) / sqrt(5)
   n = 1 のとき Fib(1) = 1 = (φ^1 - ψ^1) / sqrt(5)
   ここで、
   n = k のとき   Fib(k)   = (φ^k - ψ^k) / sqrt(5)
   n = k+1 のとき Fib(k+1) = (φ^(k+1) - ψ^(k+1)) / sqrt(5)
   とすると
   n = k+2 のとき
   Fib (k+2) = Fib(k+1) + Fib(k)
             = (φ^k - ψ^k) / sqrt(5) + (φ^(k+1) - ψ^(k+1)) / sqrt(5)
             = ((φ^k - ψ^k) + (φ^(k+1) - ψ^(k+1))) / sqrt(5)
             = ((φ+1)φ^k - (ψ+1)ψ^k) / sqrt(5)
             = (φ^(k+2) - ψ^(k+2)) / sqrt(5)
             ∵ φ+1 = (3 + sqrt(5)) / 2 = (6 + 2 * sqrt(5)) / 4 = φ^2
                ψ+1 = (3 - sqrt(5)) / 2 = (6 - 2 * sqrt(5)) / 4 = ψ^2
   ∴ n ≧ 0 なる任意の整数nについて、Fib(n) = (φ^n - ψ^n) / sqrt(5)

∴ Fib(n) - |ψ^n / sqrt(5)| < φ^n / sqrt(5) < Fib(n) + |ψ^n / sqrt(5)|

ここで |ψ| < 0.62 であるから
n < 1 のとき |ψ^n| < |ψ| < 0.62 であり、
|ψ^n / sqrt(5)| < 0.5 である。

∴ Fib(n) - 0.5 < φ^n / sqrt(5) < Fib(n) + 0.5
Q.E.D.

コード

##(sicp-answer-code "ex-1.13.scm")

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us