1.38

练习 1.38 在1737年,瑞士数学家莱昂哈德·欧拉发表了一篇论文 De Fractionibus Continuis,文中包含了e-2的一个连分式展开,其中的e是自然对数的底。在这一分式中,NiN_i 全都是1,而DiD_i依次为1,2,1,1,4,1,1,6,1,1,8,……。请写出一个程序,其中使用你在练习1.37中所做的cont-frac过程,并能基于欧拉的展开式求出e的近似值。

 
(define (d i)
  (if (= 2 (mod i 3)) (* 2 (ceiling (/ i 3))) 1)
  )
(d 1)
x
 
1
 
(d 2)
 
2
 
(d 3)
 
1
 
(d 4)
 
1
 
(d 5)
 
4
 
(d 6)
 
1
 
(d 7)
 
1
 
(d 8)
 
6
 
(d 9)
 
1
 
(d 10)
 
1
 
(d 11)
 
8
 
(define (cont-frac n d k)
  (define (g i k) 
    (if (= i k) (/ (n k) (d k))
        (/ (n i) (+ (d i) (g (+ i 1) k)))
        )
    )
  (g 1 k)
  )
(cont-frac (lambda (i) 1.0)
           d
           1)
 
1

f(1)=11=1 f(1) = \frac{1}{1} = 1

f(2)=11+12=23 f(2) = \frac{1}{1 + \frac{1}{2}} = \frac{2}{3}

 
(cont-frac (lambda (i) 1.0)
           d
           2)
 
0.6666666666666666

f(3)=11+12+11=11+13=34 f(3) = \frac{1}{1 + \frac{1}{2+\frac{1}{1}}} = \frac{1}{1 + \frac{1}{3}} = \frac{3}{4}

 
(cont-frac (lambda (i) 1.0)
           d
           3)
 
0.75

g(k,k)=NkDk 令 g(k, k) = \frac{N_k}{D_k} g(i,k)=NiDi+g(i+1,k) g(i, k) = \frac{N_i}{D_i + g(i+1, k)} f(k)=N1D1+N2+NkDk=N1D1+N2+g(k,k)=N1D1+g(2,k)=g(1,k) f(k) = \frac{N_1}{D_1 + \frac{N_2}{\ddots + \frac{N_k}{D_k}}} = \frac{N_1}{D_1 + \frac{N_2}{\ddots + g(k, k)}} = \frac{N_1}{D_1 + g(2, k)} = g(1, k) e =

 
(+ 2 (cont-frac (lambda (i) 1.0)
                d
                50))
 
2.7182818284590455

results matching ""

    No results matching ""