Решение упражнения 1.38 из SICP
Это упражнение совсем простое и основывается на результатах предыдущего.
Определим процедуру для вычисления приближения к числу 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