理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

問題1-39

正接関数の連分数展開。

(define (cont-frac n d k)
  (define (sub-cont-frac n d k ans)
    (if (= k 0)
	ans
	(sub-cont-frac n d (- k 1)
		       (/ (n k)
			  (+ (d k) ans)))))
  (sub-cont-frac n d k 1))

(define (square x) (* x x))

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

tan(pi/6)は

gosh> (tan-cf (/ pi 6) 100)
0.5773501239474585
gosh> (tan (/ pi 6))
0.5773501239474587