SICP 問題 1.35
(1)黄金比 φ が変換 x → 1 + 1/x の不動点であることを示せ。
黄金比の定義
直線を 2 つに分割することを考える。
一つを a、もう一つを b とする。
このとき、 a : b = b : (a + b) となる、
a と b の比率を黄金比と言う。
a : b = b : (a + b)
の式を比例式の性質*1を使い
b * b = a * (a + b)
b^2 = a * (a + b)
の式を得る。
ここで a の長さを 1 とする。
b^2 = 1 * (1 + b)
b^2 = 1 + b
両辺を b で割れば
b = 1/b + 1
を得る。
よって、黄金比 φ は、変換 x → 1 + 1/x の不動点である。
(2)この事実を使い fixed-point 手続きにより φ を計算せよ。
(define tolerance 0.00001) (define (fixed-point f first-guess) (define (close-enough? v1 v2) (< (abs (- v1 v2)) tolerance)) (define (try guess) (let ((next (f guess))) (if (close-enough? guess next) next (try next)))) (try first-guess)) (define phi (fixed-point (lambda (x) (+ 1 (/ 1 x))) 1.0))
実行結果
gosh> phi 1.6180327868852458
*1:比例式の外項の積と内項の積は等しい。