Решение упражнения 1.38 из SICP

25 October, 2007 (21:09) | Решения упражнений

Это упражнение совсем простое и основывается на результатах предыдущего.

Определим процедуру для вычисления приближения к числу e (здесь параметр – это число элементов в конечной цепной дроби):

(define (e k) 
  (+ 2 (cont-frac (lambda (i) 1.0) 
                  (lambda (i) (if (= (remainder i 3) 2) 
                                     (* 2 (/ (+ i 1) 3)) 
                                     1)) 
                  k)))

Вычислим приближение при 10 и 100 элементах:

> (e 10) 
2.7182817182817183 
> (e 100) 
2.7182818284590455

Comments

Pingback from SICP по-русски » Blog Archive » Решение упражнения 1.39 из SICP
Date: October 25, 2007, 10:16 pm

[…] SICP по-русски Структура и интерпретация компьютерных программ: заметки и решения « Решение упражнения 1.38 из SICP […]

Comment from Irv
Date: January 10, 2016, 1:35 pm

(define (cont-fract n d k)
  (define (iter i x)
    (if (> i 0)
        (iter (- i 1) (/ (n i) (+ (d i) x)))
        x))
  (iter k 0))
     
(define (n i) 1.0)
(define (d i) 
  (let ([r (remainder i 3)]
        [n (* 2 (/ (+ 1 i) 3))])
    (cond [(= r 0) 1]
          [(= r 1) 1]
          [(= r 2) n])))

(display "2.7182818284590452353602874713527")
(newline)
(display (+ 2 (cont-fract n d 20)))

Write a comment