開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Scheme (プログラミング言語)
- Gauche (処理系)
計算機プログラムの構造と解釈(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.を解いてみる。
その他参考書籍
- Instructor's Manual to Accompany Structure & Interpretation of Computer Programs
- プログラミングGauche (Kahuaプロジェクト (著), 川合 史朗 (監修), オライリージャパン)
問題 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 コメント:
コメントを投稿