問題1.38、問題1.39 – SICP(計算機プログラムの構造と解釈)その20
2008年11月24日
問題1.38
(define (cont-frac n d k)
(define (iter i)
(if (= i k)
(/ (n i) (d i))
(/ (n i) (+ (d i) (iter (+ i 1))))))
(iter 1))
(define (iter-a-to-b f a b)
(newline)
(display a)
(display " -> ")
(if (> a b)
(f a)
(and (display (f a)) (iter-a-to-b f (+ a 1) b))))
(iter-a-to-b
(lambda (k)
(+
(cont-frac (lambda (i) 1.0)
(lambda (i) (if (= (remainder i 3) 2)
(- i (/ (- i 2) 3))
1))
k)
2))
1
20)
gosh>
1 -> 3.0
2 -> 2.6666666666666665
3 -> 2.75
4 -> 2.7142857142857144
5 -> 2.71875
6 -> 2.717948717948718
7 -> 2.7183098591549295
8 -> 2.718279569892473
9 -> 2.718283582089552
10 -> 2.7182817182817183
11 -> 2.7182818352059925
12 -> 2.7182818229439496
13 -> 2.718281828735696
14 -> 2.7182818284454013
15 -> 2.718281828470584
16 -> 2.7182818284585633
17 -> 2.718281828459065
18 -> 2.7182818284590278
19 -> 2.718281828459046
20 -> 2.718281828459045
21 -> 2.7182818284590455
問題1.39
(define (cont-frac n d k)
(define (iter i)
(if (= i k)
(/ (n i) (d i))
(/ (n i) (+ (d i) (iter (+ i 1))))))
(iter 1))
(define (iter-a-to-b f a b)
(newline)
(display a)
(display " -> ")
(if (> a b)
(f a)
(and (display (f a)) (iter-a-to-b f (+ a 1) b))))
(define (tan-cf x k)
(cont-frac (lambda (i) (if (= i 1) x (- (square x))))
(lambda (i) (- (* 2 i) 1))
k))
(iter-a-to-b
(lambda (k) (tan-cf 1.0 k))
1
20)
gosh>
1 -> 1.0
2 -> 1.4999999999999998
3 -> 1.5555555555555558
4 -> 1.5573770491803278
5 -> 1.5574074074074076
6 -> 1.557407722401769
7 -> 1.5574077246432194
8 -> 1.557407724654856
9 -> 1.557407724654902
10 -> 1.557407724654902
11 -> 1.557407724654902
12 -> 1.557407724654902
13 -> 1.557407724654902
14 -> 1.557407724654902
15 -> 1.557407724654902
16 -> 1.557407724654902
17 -> 1.557407724654902
18 -> 1.557407724654902
19 -> 1.557407724654902
20 -> 1.557407724654902
21 -> 1.557407724654902
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542