乐正

Actions speak louder than words.

Sicp-ex1-39

问题

正切函数的连分式表示由德国数学家 J.H. Lambert 在1770年发表:

$$ \tan x = \cfrac {x} {1 - \cfrac {x^2} { 3 - \cfrac {x^2} {5 - \ddots} }} $$

其中的$x$用弧度表示。请定义过程(tan-cf x k),它基于 Lambert 公式计算正切函数的 近似值。$k$描述的是计算的项数,就像练习1.37一样。

解答

练习1.39 (ex1-39.scm) download
1
2
3
4
5
6
7
8
(define (tan-cf x k)
  (cont-frac (lambda (i)
               (if (= i 1)
                   x
                   (- (square x))))
             (lambda (i)
               (- (* 2.0 i) 1))
             k))

测试

注意:这里的$x$是以弧度表示的,其值范围是$0 \leqslant x \leqslant 2\pi$。

1
2
3
4
5
6
7
8
(tan-cf 3.14 1000)
;Value: -1.5926549364072742e-3

(tan-cf 0.87 1000)
;Value: 1.1853248603008053

(tan-cf 6 1000)
;Value: -.291006191384749

draft

« sicp-ex1-38 sicp-ex1-40 »

Comments