2014年2月20日木曜日

開発環境

計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の1(手続きによる抽象の構築)、1.3(高階手続きによる抽象)、1.3.3(一般的方法としての手続き)、区間に分法によ売る方程式の零点の探索、関数の不動点の探索、問題 1.35.を解いてみる。

その他参考書籍

問題 1.35.

x ↦ 1 + 1/x
x^2 ↦ x + 1
この不動点は
x^2 = x + 1

問題の変換の不動点は黄金比である。

黄金比の近似の計算。

コード(BBEdit, Emacs)

sample.scm

#!/usr/bin/env gosh
;; -*- coding: utf-8 -*-

;; これまでに書いた手続き
(load "./compound_procedures.scm")

(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 tolerance 0.00001)

(define golden-ratio (fixed-point (lambda (x)
                                    (+ 1 (/ 1 x)))
                                  1.5))

;; テスト
(print golden-ratio)

入出力結果(Terminal(gosh), REPL(Read, Eval, Print, Loop))

$ ./sample.scm 
1.6180327868852458
$

0 コメント:

コメントを投稿