問題1.46 – SICP(計算機プログラムの構造と解釈)その24
2008年11月28日
問題1.46
(iterative-improve [予測値が十分であるかを調べる手続き] [予測値を改良する手続き])
(define (iterative-improve enough? improve)
(lambda (guess)
(define (iter guess)
(if (enough? guess)
guess
(iter (improve guess))))
(iter guess)))
sqrt
手続き
(define (sqrt x)
(define (enough? guess)
(< (abs (- (square guess) x)) 0.001))
(define (improve guess)
(average guess (/ x guess)))
((iterative-improve enough? improve) 1.0))
(sqrt 2)
gosh> 1.4142156862745097
(sqrt 3)
gosh> 1.7321428571428572
fixed-point
関数fの不動点を探索する手続き。
(define (fixed-point f first-guess)
(define (close-enough? guess)
(< (abs (- guess (f guess))) 0.00001))
(f ((iterative-improve close-enough? f) first-guess)))
(fixed-point cos 1.0)
gosh> 0.7390822985224023
(fixed-point (lambda (y) (+ (sin y) (cos y)))
1.0)
gosh> 1.2587315962971173
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542