2016年9月27日火曜日

開発環境

計算機プログラムの構造と解釈[第2版](ハロルド エイブルソン (著)、ジュリー サスマン (著)、ジェラルド・ジェイ サスマン (著)、Harold Abelson (原著)、Julie Sussman (原著)、Gerald Jay Sussman (原著)、和田 英一 (翻訳)、翔泳社、原著: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の第1章(手続きによる抽象の構築)、1.3(高階手続きによる抽象)、1.3.3(一般的方法としての手続き)、問題1.39.を取り組んでみる。

その他参考書籍

問題1.39.

コード(Emacs)

(begin
  (load "procedures.scm")
  (newline)
  (define (p x) (display x) (newline))

  (define pi 3.14)
  (define nums '(1 2 3 4 5 6 7 8 9 10))
  (define xs (list 0 (/ pi 6) (/ pi 4) (/ pi 3)))
  (define radians (append xs (map - xs)))
  (define (cont-frac n d k)
    (define (iter i result)
      (if (= i 0)
          (* 1.0 result)
          (iter (- i 1)
                (/ (n i)
                   (+ (d i) result)))))
    (iter k 0))


  (define (tan-cf x k)
    (define (n i) (- (square x)))
    (define (d i) (+ (* 2 i) 1))
    (/ x (+ 1 (cont-frac n d (- k 1)))))



  
  (for-each (lambda (x)
              (display "tan ")
              (p x)
              (for-each (lambda (k)
                          (p (tan-cf x k)))
                        nums)
              (p "primitive")
              (p (tan x)))
            radians)
  'done)

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

$ ksi < sample39.scm
ksi> 
tan 0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
primitive
0.0
tan 0.5233333333333333
0.5233333333333333
0.5759096152043399
0.5769876838370881
0.57699636208848
0.5769964002862351
0.5769964003926679
0.5769964003928727
0.5769964003928729
0.5769964003928729
0.5769964003928729
primitive
0.5769964003928729
tan 0.785
0.785
0.9879288103952764
0.9989925703264279
0.9992018697579907
0.9992039767162123
0.9992039900467972
0.9992039901048574
0.9992039901050424
0.9992039901050428
0.9992039901050428
primitive
0.9992039901050427
tan 1.046666666666667
1.046666666666667
1.648736318872372
1.727006072241033
1.72987593124508
1.729928614920157
1.729929215374189
1.729929220062975
1.729929220089674
1.72992922008979
1.72992922008979
primitive
1.72992922008979
tan 0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
primitive
0.0
tan -0.5233333333333333
-0.5233333333333333
-0.5759096152043399
-0.5769876838370881
-0.57699636208848
-0.5769964002862351
-0.5769964003926679
-0.5769964003928727
-0.5769964003928729
-0.5769964003928729
-0.5769964003928729
primitive
-0.5769964003928729
tan -0.785
-0.785
-0.9879288103952764
-0.9989925703264279
-0.9992018697579907
-0.9992039767162123
-0.9992039900467972
-0.9992039901048574
-0.9992039901050424
-0.9992039901050428
-0.9992039901050428
primitive
-0.9992039901050427
tan -1.046666666666667
-1.046666666666667
-1.648736318872372
-1.727006072241033
-1.72987593124508
-1.729928614920157
-1.729929215374189
-1.729929220062975
-1.729929220089674
-1.72992922008979
-1.72992922008979
primitive
-1.72992922008979
=> done
ksi> $

0 コメント:

コメントを投稿