正接関数の連分数展開は1770年にドイツの数学者 J. H. Lambertが発表した. xをラジアンで表し,
Lambertの式に基づいて正接関数の近似値を計算する手続き(tan-cf x k) を定義せよ. kは問題1.37と同様, 計算する項数を指定する.
Lambertの式に基づいて正接関数の近似値を計算する手続き(tan-cf x k) を定義せよ. kは問題1.37と同様, 計算する項数を指定する.
問題文の式から手続きを定義します. 分子がx2となる項からcont-fracを使います.
(define (square x) (* x x))
;; 反復的プロセスを生成
(define (cont-frac n d k)
(define (iter i result)
(if (= i 0)
result
(iter (- i 1)
(/ (n i)
(+ (d i) result)))))
(iter k 0))
(define (tan-cf x k)
(/ x
(+ 1 (cont-frac (lambda (i) (- (square x)))
(lambda (i) (+ (* i 2) 1))
k))))
tanは定義済みですので, その結果と比較します.
ようこそ DrRacket, バージョン 6.1 [3m]. 言語: Pretty Big; memory limit: 2048 MB. > (tan 1.0) 1.5574077246549023 > (tan-cf 1.0 10) 1.557407724654902 > (tan-cf 1.0 100) 1.557407724654902 >
0 件のコメント:
コメントを投稿