(require (lib "trace.ss")) (define (cube x) (* x x x)) (define (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (next a) next b)))) (define (inc1 n) (+ n 1)) (define (inc2 n) (+ n 2)) (define (simpson f a b n) (let* ((h (/ (- b a) n)) (term (lambda(k) (f (+ a (* k h)))))) (* (/ h 3.0) (+ (sum term 0 inc1 n) (sum term 1 inc1 (- n 1)) (* 2.0 (sum term 1 inc2 (- n 1))))))) (trace sum) (simpson cube 0.0 1.0 10) |(sum # 0 # 10) | (sum # 1 # 10) | |(sum # 2 # 10) | | (sum # 3 # 10) | | |(sum # 4 # 10) | | | (sum # 5 # 10) | | | |(sum # 6 # 10) | | | | (sum # 7 # 10) | | | | |(sum # 8 # 10) | | | | | (sum # 9 # 10) | | | |[10](sum # 10 # 10) | | | |[11](sum # 11 # 10) | | | |[11]0 | | | |[10]1.0 | | | | | 1.729 | | | | |2.241 | | | | 2.584 | | | |2.8000000000000003 | | | 2.9250000000000003 | | |2.9890000000000003 | | 3.0160000000000005 | |3.0240000000000005 | 3.0250000000000004 |3.0250000000000004 |(sum # 1 # 9) | (sum # 2 # 9) | |(sum # 3 # 9) | | (sum # 4 # 9) | | |(sum # 5 # 9) | | | (sum # 6 # 9) | | | |(sum # 7 # 9) | | | | (sum # 8 # 9) | | | | |(sum # 9 # 9) | | | | | (sum # 10 # 9) | | | | | 0 | | | | |0.7290000000000001 | | | | 1.241 | | | |1.584 | | | 1.8000000000000003 | | |1.9250000000000003 | | 1.9890000000000003 | |2.0160000000000005 | 2.0240000000000005 |2.0250000000000004 |(sum # 1 # 9) | (sum # 3 # 9) | |(sum # 5 # 9) | | (sum # 7 # 9) | | |(sum # 9 # 9) | | | (sum # 11 # 9) | | | 0 | | |0.7290000000000001 | | 1.072 | |1.197 | 1.224 |1.2249999999999999 0.25