SICP問題1.13

すっかり忘れ去った証明問題。

φ=(1 + √5)/2 の時、 Fib(n)が (φ^n)/(√5)に最も近い整数であることを証明せよ
ヒント:ψ=(1 - √5)/2とする。帰納法とFibonnacci数の定義を用い
Fib(n)=((φ^n) - (ψ^n))/√5を証明せよ

ということで以下の感じ。

Fibonacchi 数の定義は
n = 0 の場合 Fib(0) = 0
n = 1 の場合 Fib(1) = 1
n > 1 の場合 Fib(n) = Fib(n - 1) + Fib(n - 2)

n=0 の時
φ^0 = 1
ψ^0 = 1
右辺 = (1 - 1)/√5 = 0
左辺 = Fib(0) = 0
∴左辺 = 右辺 … (1)

n=1 の時
φ^1 = (1 + √5)/2
ψ^1 = (1 - √5)/2
右辺 = (((1 + √5)/2) - ((1 - √5)/2))/√5
     = ((1 + √5 - 1 + √5)/2)/√5
     = (2√5/2)/√5
     = 1
左辺 = Fib(1) = 1
∴左辺 = 右辺 … (2)

n=k, n=k+1 の時、両方で左辺 = 右辺が成り立つと仮定する…(3)
Fib(k) = ((φ^k) - (ψ^k))/√5
Fib(k+1) = ((φ^k+1) - (ψ^k+1))/√5

n=k+2の時
Fib(k+2) = Fib(k + 2 - 1) + Fib(k + 2 - 2)
         = Fib(k + 1) + Fib(k)
         = ((φ^(k+1)) - (ψ^(k+1)))/√5 + ((φ^k) - (ψ^k))/√5
         = ((φ^(k+1)) - (ψ^(k+1)) + (φ^k) - (ψ^k))/√5
         = (φ^k)(1 + φ) - (ψ^k)(1 + ψ) … (4)
ここで
φ = (1 + √5)/2
ψ = (1 - √5)/2
のため
1 + φ = 1 + (1 + √5)/2
       = (3 + √5)/2
       = (6 + 2√5)/4
φ^2 = ((1 + √5)/2)^2
     = ((1^2) + (2*1*√5) + (√5^2))/(2^2)
     = (1 + 2√5 + 5)/4
     = (6 + 2√5)/4
よって
1 + φ= φ^2
同様に
1 - ψ = 1 + (1 - √5)/2
       = (3 - √5)/2
       = (6 - 2√5)/4
ψ^2 = ((1 - √5)/2)^2
     = ((1^2) - (2*1*√5) + (√5^2))/(2^2)
     = (1 - 2√5 + 5)/4
     = (6 - 2√5)/4
1 + ψ= ψ^2
となる。
ここから(4)の式は
         = (φ^k)(1 + φ) - (ψ^k)(1 + ψ)
         = (φ^k)(φ^2) - (ψ^k)((ψ^2)
         = φ^(k + 2) - ψ^(k + 2)
となり、(n >= 2)の任意の n について
Fib(n) = ((φ^n) - (ψ^n))/√5
が成り立つ。

よって
Fib(n) - ((ψ^n)/√5) < (φ^n)/√5 < Fib(n) + ((ψ^n)/√5)

ここで |ψ| = |(1 - √5)/2| = |(1 - 2.236...)/2| = |-0.6108| < 0.62 であるから
n < 1 のとき |(ψ^n)| < |ψ| < 0.62 であり、
|(ψ^n / √5)| < 0.5 である。

よって
Fib(n) - 0.5 < φ^n / √5 < Fib(n) + 0.5
が証明された