天天看点

SICP 1.35-1.39

下面几题答案,非本人解答,有待验证

练习1.35

(define tolerance )
(define (fixed-point f first-guess)
  (define (close-enough? v v)
    (< (abs (- v v))
       tolerance))
  (define (try guess)
    (let ((next (f guess)))
      (if (close-enough? guess next)
        next
        (try next))))
  (try first-guess))
(define (golden-ratio)
  (fixed-point (lambda (x) (+  (/  x))) ))
           

练习1.36

(define tolerance )
(define (fixed-point f first-guess)
  (define (close-enough? v v)
    (< (abs (- v v))
       tolerance))
  (define (try guess)
    (newline) (display guess) (newline)
    (let ((next (f guess)))
      (if (close-enough? guess next)
        next
        (try next))))
  (try first-guess))

(define (xx)
  (fixed-point (lambda (x) (/ (log ) (log x))) ))

(define (xx-a) ;using average damping
  (fixed-point (lambda (x) (/ (+ x (/ (log ) (log x))) )) ))
           

练习1.37

a)

(define (cont-frac n d k)
  (define (cf-iter i)
    (if (< i k)
      (/ (n i) 
         (+ (d i) (cf-iter (+ i ))))
      ))
  (cf-iter ))

(define (test k)
  (let ((g (/  (/ (+  (sqrt )) ))))
    (if (< (abs (- g (cont-frac (lambda (i) ) (lambda (i) ) k)))
           )
      (display k)
      (test (+ k )))))
           

b)

(define (cont-frac-i n d k)
  (define (cf-iter2 i k-to-i)
    (if (> i )
      (cf-iter2 (- i ) (/ (n i) (+ (d i) k-to-i)))
      k-to-i))
  (cf-iter2 k ))

(define (test-i k)
  (let ((g (/  (/ (+  (sqrt )) ))))
    (if (< (abs (- g (cont-frac-i (lambda (i) ) (lambda (i) ) k)))
           )
      (display k)
      (test-i (+ k )))))
           

练习1.38

(define (cont-frac-i n d k)
  (define (cf-iter2 i k-to-i)
    (if (> i )
      (cf-iter2 (- i ) (/ (n (- i )) (+ (d (- i )) k-to-i)))
      k-to-i))
  (cf-iter2 (+ k ) ))

(define (e k)
  (+ 
     (cont-frac-i (lambda (i) )
                  (lambda (i)
                    (if (=  (remainder i )) (*  (+  (truncate (/ i )))) )) 
                  k)))
           

练习1.39

(define (cont-frac-i n d k)
  (define (cf-iter2 i k-to-i)
    (if (> i )
      (cf-iter2 (- i ) (/ (n (- i )) (- (d (- i )) k-to-i)))
      k-to-i))
  (cf-iter2 (+ k ) ))

(define (tan-cf x k)
  (/ (cont-frac-i (lambda (i) (* x x))
                  (lambda (i) (- (*  i) )) 
                  k)
     x))
           

继续阅读