正接関数の連分数展開は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 件のコメント:
コメントを投稿