Skip to content

1.29

; Simpson’s Rule is a more accurate method of numerical 
; integration than the method illustrated above. Using 
; Simpson’s Rule, the integral of a function f between a 
; and b is approximated as
; (h/3)*(y0 +4y1 +2y2 +4y3 +2y4 +···+2yn−2 +4yn−1 +yn)
; where h = (b − a)/n, for some even integer n, and 
; yk = f (a + kh). (Increasing n increases the accuracy 
; of the approximation.) Define a procedure that takes 
; as arguments f, a, b, and n and returns the value of 
; the integral, computed using Simpson’s Rule. Use your 
; procedure to integrate cube between 0 and 1 
; (with n = 100 and n = 1000), and compare the results 
; to those of the integral procedure shown above.

(define (integral f a b n)
    (define (coefficient k)
        (cond ((or (= k 0) (= k n)) 1)
              ((even? k) 2)
              (else 4)))
    (define h (/ (- b a) n))
    (define (y-of-k k) (f (+ a (* k h))))

    (define (iter k sum)
        (cond ((= k -1) sum)
              (else (iter (- k 1)
                          (+ sum
                             (* (coefficient k)
                                (y-of-k k)))))
        )
    )
    (* (/ h 3) (iter n 0))
)

(define (cube x) (* x x x))
(integral cube 0 1 100)  ;Value: .24999999999999992
(integral cube 0 1 1000) ;Value: .2500000000000003