問題1.40、問題1.41 – SICP(計算機プログラムの構造と解釈)その21

問題1.40

(define tolerance 0.00001)

(define (fixed-point f first-guess)
  (define (close-enough? v1 v2)
    (< (abs (- v1 v2)) tolerance))
  (define (try guess)
    (let ((next (f guess)))
         (if (close-enough? guess next)
             next
             (try next))))
  (try first-guess))

(define dx 0.00001)

(define (deriv g)
  (lambda (x)
          (/ (- (g (+ x dx)) (g x))
             dx)))

(define (newton-transform g)
  (lambda (x)
          (- x (/ (g x) ((deriv g) x)))))

(define (newtons-method g guess)
  (fixed-point (newton-transform g) guess))

(define (cubic a b c)
  (lambda (x) (+
                (cube x)
                (* a (square x))
                (* b x)
                c)))

(newtons-method (cubic 2 3 4) 1.0)

gosh> -1.6506291914330982

問題1.41

SICP問題1.41

(define (double f)
  (lambda (x) (f (f x))))

((double inc) 1)

gosh> 3

((double square) 2)

gosh> 16

(((double (double double)) inc) 5)

gosh> 21
計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»