2014年2月23日日曜日

開発環境

計算機プログラムの構造と解釈(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.37-b.を解いてみる。

その他参考書籍

問題 1.37-b.

コード(BBEdit, Emacs)

sample.scm

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

;; 有限連分数
(define (const-frac n d k)
  (define (iter i)
    (if (= i k)
 (/ (n i)
    (d i))
 (/ (n i)
    (+ (d i)
       (iter (+ i 1))))))
  (iter 1))

(define (phi k)
  (/ 1 (const-frac (lambda (i) 1.0)
                   (lambda (i) 1.0)
                   k)))

(define (test k)
  (if (< (abs (- (phi k)
                 1.6180))
  0.0001)
      (begin (print k ": " (phi k)))
      (begin (print k ": " (phi k))
             (test (+ k 1)))))

;;
(test 1)

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

$ ./sample.scm
1: 1.0
2: 2.0
3: 1.5
4: 1.6666666666666665
5: 1.6
6: 1.625
7: 1.6153846153846154
8: 1.619047619047619
9: 1.6176470588235294
10: 1.6181818181818184
11: 1.6179775280898876
$

0 コメント:

コメントを投稿