2014年2月25日火曜日

開発環境

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

その他参考書籍

問題 1.39.

コード(BBEdit, Emacs)

sample.scm

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

(define (cont-frac n d k)
  (define (iter i result)
    (if (= i 0)
        result
        (iter (- i 1)
              (/ (n i)
                 (+ (d i)
                    result)))))
  (iter k 0))

(define (n i x)
  (if (= i 1)
      x
      (* -1
         (* x x))))

(define (d i)
  (- (* 2 i)
     1))

(define (tan-cf x k)
  (cont-frac (lambda (i)
               (n i x))
             d
             k))

(define (from-start-to-end start end)
  (define (iter i result)
    (if (= i start)
        (cons i result)
        (iter (- i 1)
              (cons i result))))
  (iter end '()))

(for-each (lambda (x)
            (print "tan " x " ≈ " (tan-cf x 10000)))
          (map (lambda (n)
                 (/ n 10.0))
               (from-start-to-end 0 60)))

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

$ ./sample.scm
tan 0.0 ≈ 0.0
tan 0.1 ≈ 0.10033467208545055
tan 0.2 ≈ 0.2027100355086725
tan 0.3 ≈ 0.3093362496096232
tan 0.4 ≈ 0.4227932187381618
tan 0.5 ≈ 0.5463024898437905
tan 0.6 ≈ 0.6841368083416923
tan 0.7 ≈ 0.8422883804630793
tan 0.8 ≈ 1.0296385570503641
tan 0.9 ≈ 1.2601582175503392
tan 1.0 ≈ 1.557407724654902
tan 1.1 ≈ 1.9647596572486525
tan 1.2 ≈ 2.5721516221263188
tan 1.3 ≈ 3.602102447967979
tan 1.4 ≈ 5.797883715482889
tan 1.5 ≈ 14.101419947171719
tan 1.6 ≈ -34.23253273555715
tan 1.7 ≈ -7.696602139459161
tan 1.8 ≈ -4.286261674628062
tan 1.9 ≈ -2.9270975146777727
tan 2.0 ≈ -2.185039863261519
tan 2.1 ≈ -1.7098465429045078
tan 2.2 ≈ -1.3738230567687946
tan 2.3 ≈ -1.1192136417341325
tan 2.4 ≈ -0.9160142896734108
tan 2.5 ≈ -0.7470222972386602
tan 2.6 ≈ -0.6015966130897586
tan 2.7 ≈ -0.4727276291030373
tan 2.8 ≈ -0.3555298316511762
tan 2.9 ≈ -0.24640539397196617
tan 3.0 ≈ -0.14254654307427775
tan 3.1 ≈ -0.04161665458563596
tan 3.2 ≈ 0.05847385445957876
tan 3.3 ≈ 0.1597457476600322
tan 3.4 ≈ 0.2643169008674251
tan 3.5 ≈ 0.3745856401585947
tan 3.6 ≈ 0.49346672998490393
tan 3.7 ≈ 0.6247330752245638
tan 3.8 ≈ 0.7735560905031258
tan 3.9 ≈ 0.9474246499358926
tan 4.0 ≈ 1.1578212823495773
tan 4.1 ≈ 1.4235264831943655
tan 4.2 ≈ 1.7777797745088415
tan 4.3 ≈ 2.28584787736698
tan 4.4 ≈ 3.0963237806497443
tan 4.5 ≈ 4.637332054551185
tan 4.6 ≈ 8.860174895648045
tan 4.7 ≈ 80.71276296747543
tan 4.8 ≈ -11.384870654242935
tan 4.9 ≈ -5.267493065826729
tan 5.0 ≈ -3.3805150062465867
tan 5.1 ≈ -2.4493894155845983
tan 5.2 ≈ -1.8856418775197634
tan 5.3 ≈ -1.5012733958069304
tan 5.4 ≈ -1.2175408246205557
tan 5.5 ≈ -0.9955840522138854
tan 5.6 ≈ -0.8139432836897031
tan 5.7 ≈ -0.6597305715207763
tan 5.8 ≈ -0.5246662219468001
tan 5.9 ≈ -0.4031108998732264
tan 6.0 ≈ -0.291006191384749
tan 6.1 ≈ -0.18526223068913528
tan 6.2 ≈ -0.08337771486592814
tan 6.3 ≈ 0.01681627769418206
$

0 コメント:

コメントを投稿