問題1.29
シンプソンの公式の問題。
意外とむずかった。というか、やっているうちに、高階関数のことをさっぱり忘れてしまって、『何やってんだっけ?』と言う状態に陥ってしまった。
(define (simpson f a b n) (define h (/ (- b a) n)) (define (y k) (f (+ a (* k h)))) (define (term k) (* (if (even? k) 2 4) (y k))) (define (next k) (+ k 1)) (* (/ h 3.0) (- (sum term 0 next n) (y 0) (y n))))
スイープレンジを[a, b]から[0, n]にしないといけない、と言うところでごちゃごちゃしてしまった。
p.s.
LLTVのときにも話題に上ってたが、Pythonで書くと、みんな同じようなコードになる、ってのは、ぼくはいまいち受け入れがたいところがある。言語よりも、どの教科書でコード書きを勉強したか、と言う方が影響が大きいのではないか。