理系の人間は, の級数展開には苦しめられたことだと思います.高次微分とかはメンドくて,しかも とかは とか とかの級数展開と違ってあんまし美しくもない.
メンドいのは全部 PC にやらせれば良いと思う.ここでは,べき級数を割り算するというヤバげな問題にチャレンジします.
チャレンジといっても,べき級数 に対して のべき級数を求める関数は問題 3-61 で,べき級数同士を乗算した結果のべき級数を求める関数は問題 3-60 で既に求まっていますから,あとはこれを組み合わせれば良いですね.
(define (div-series A B) (if (= (stream-car B) 0) (error "denominator's contant is 0") (mul-series A (invert-unit-series B))))
これを使うと のマクローリン展開なんてクソみたいに簡単だ. なんだから,それをただ書き下せばいい.
(define cosine-series (cons-stream 1 (integrate-series (stream-map (lambda (x) (* x -1)) sine-series)))) (define sine-series (cons-stream 0 (integrate-series cosine-series))) (define tangent-series (div-series sine-series cosine-series)) (dump-stream tangent-series 10); 0, 1, 0, 1/3, 0, 2/15, 0, 17/315, 0, 62/2835, done