; ====================================================================== ; ; Structure and Interpretation of Computer Programs ; (trial answer to excercises) ; ; 计算机程序的构造和解释(习题试解) ; ; created: code17 03/05/05 ; modified: ; (保持内容完整不变前提下,可以任意转载) ; ======================================================================
;; SICP No.1.29
;; 观察simpson个公式的规律,原公式可写为 ;; n/2 ;; h --- ;; - > y_(2i-2) + 4y_(2i-1) + y_(2i) ;; 3 --- ;; i=1 ;; 因此可以直接调用sum函数
(define (simpson f a b n) (define h (/ (- b a) n)) (define (y k) (f (+ a (* k h)))) (define (next x) (+ x 1)) (define (term i) (+ (y (- (* 2 i) 2)) (y (* 2 i)) (* 4 (y (- (* 2 i) 1))))) (/ (* h (sum term 1 next (/ n 2))) 3))
;; Test-it: ;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc. ;; > (integral cube 0 1 0.01) ;; 0.24998750000000042 ;; > (simpson cube 0.0 1.0 100) ;; 0.25000000000000017 ;; > (integral cube 0 1 0.001) ;; 0.249999875000001 ;; > (simpson cube 0.0 1.0 1000) ;; 0.25000000000000017 ;; 测试结果表明,simpson公式在取同样的间隔精度时,要比原文中的公式更精确。

|