理系学生日記

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

問題1-37(a)

連分数f=\frac{N_1}{D_1+\frac{N_2}{D_2+\frac{N_3}{D_3+\cdots}}}の値を求めるcont-fracを定義します。
ただし、これは実際にはk項有限連分数を計算する。

(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))

N_i, D_iのすべてが1だと、これは1/黄金比に収束するらしい。

gosh> (cont-frac (lambda (i) 1.0)
	   (lambda (i) 1.0)
	   9)
0.6179775280898876
gosh> (cont-frac (lambda (i) 1.0)
	   (lambda (i) 1.0)
	   10)
0.6180555555555556
gosh> (cont-frac (lambda (i) 1.0)
	   (lambda (i) 1.0)
	   11)
0.6180257510729613

4桁の精度を得るためには、kは11以上じゃないとだめぽ?