码迷,mamicode.com
首页 > 其他好文 > 详细

SICP 1.29 1.30

时间:2014-08-22 00:27:35      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:io   ar   cti   代码   ad   sp   on   ef   

解:代码如下

(define (sum term a next b)
  (if (> a b)
      0
      (+ (term a) (sum term (next a) next b))))

(define (add-1 x)
  (+ x 1))

(define (sum-iter term a next b)
  (define (iter a result)
    (if (> a b)
        result
        (iter (next a) (+ result (term a)))))
  (iter a 0))

(define (integral f a b n)
  (define h (/ (- b a) (* 1.0 n)))
  (define (function-y k)
    (f (+ a (* k h))))
  (define (term k)
    (define y (function-y k))
    (cond ((= k 0) y)
          ((= k n) y)
          ((even? k) (* 2 y))
          (else (* 4 y))))
  (* (/ h 3) (sum-iter term 0 add-1 n)))

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

1.29的难点是找出状态转移变量,也就是k;要注意的时k=0和k=n时,y函数前面是没有2或4的。

当n=1000时,用sum求出的是0.25000000000000003,而用sum-iter求出的是0.25000000000000006,用DrRacket,不知道为什么。

SICP 1.29 1.30,布布扣,bubuko.com

SICP 1.29 1.30

标签:io   ar   cti   代码   ad   sp   on   ef   

原文地址:http://my.oschina.net/u/1445655/blog/305375

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!