無限ストリームとして表されたべき級数同士をかけ合わせる,mul-series を作成する問題.気付くまで,考え方が難しかった...
乗算に用いるべき級数を と とする.このとき, をどう考えるかってことなんだけど,こう考えると失敗する.ていうか失敗した.は,これ,どう書き下せばいいの?バカなの?死ぬの?みたいな感じ.
むしろ自然に,以下のように考えるべきだった.
これを Scheme として書き下せばいい.
(define (mul-series s1 s2) (cons-stream (* (stream-car s1) (stream-car s2)) (add-streams (scale-stream (stream-cdr s2) (stream-car s1)) (mul-series (stream-cdr s1) s2))))
これで, をテストする.
(define s (add-streams (mul-series cosine-series cosine-series) (mul-series sine-series sine-series))) (dump-stream s 10) ; 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, done
たしかに 1 になってるなー.