2 days ago

my attempt to do the exercises in sicp.

## Sunday, June 29, 2008

### sicp exercise 1.29

; Exercise 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(y[0] + 2y[1] + 4y[2] + 2y[3] + ...... 2y[n-2] + 4y[n-1] + y[n])/3

;

; 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 (sum-recur term next a b)

(if ( > a b)

0

(+ (term a)

(sum-recur term next (next a) b))))

(define (sum-iter term next a b)

(define (sum-iter-impl term next a1 b1 result)

(if ( > a1 b1)

result

(sum-iter-impl term next (next a1) b1 (+ (term a1) result))))

(sum-iter-impl term next a b 0))

(define (integrate func a b n)

(define h (/ (- b a) n))

(define (next x) (+ x h))

(define (prefix x)

(cond ((even? (/ (- x a) h)) 4)

(else 2)))

(define (term x) (* (prefix x) (func x)))

(/

(*

(+

(func a)

(func b)

(sum-iter term next (+ a h) (- b h)))

h)

3))

(define (cube x) (* x x x))

(display (integrate cube 0 1 100))(newline)

(display (integrate cube 0 1 1000))(newline)

Subscribe to:
Post Comments (Atom)

## No comments:

Post a Comment