sicp3.5.2、3.5.3节部分习题尝试解答

   本节主要讲述无穷流。
3.53,显然

(define s (cons-stream 1 (add-stream s s)))

定义是2的n次方组成的无穷数列,2,4,8,16,32...

3.54,定义阶乘组成的无穷序列:

(define (mul-streams s1 s2)
  (stream-map * s1 s2))
(define factorials (cons-stream 1 (mul-streams factorials (stream-cdr integers))))

3.55解答,比较有趣,也是不难的题目,列出来找出规律就成了,就是将(stream-car s)加到生成的序列中的每个元素上,通过stream-map,最后的结果就是每个元素都是前n个元素累积的结果,我的解答:

(define (partial-sums s)
  (cons-stream (stream-car s) (stream-map (lambda(x) (+ x (stream-car s))) (partial-sums (stream-cdr s)))))

3.56,有了merge就好办了,根据条件合并起3种情况来就好:

(define S (cons-stream 1 (merge (scale-stream s 2) (merge (scale-stream s 3) (scale-stream s 5)))))

3.57,略过

3.58,观察到,num每次都与radix相乘并且radix保持不变,那么radix可以认为是一个基数,den也保持不变作为除数,那么这个序列就是以radix为基数对den求整数商的序列,不明白num为什么每次要变换成余数?这个序列有啥特别的用途呢?未解。

(expand 1 7 10)
=> 1 4 2 8 5 7 1 4 2 8

(expand 3 8 10)
=> 3 7 5 0 0 0 0 0 0 0

3.59解答:
a)只要将序列通过前面定义的mul-streams与整数的倒数序列相乘:

(define (integrate-series s)
  (mul-streams (stream-map (lambda(x) (/ 1 x)) integers) s))

b)照着定义来了,cons的级数注意使用scale-stream乘以-1:

(define sine-series
  (cons-stream 0 (integrate-series cosine-series)))

(define cosine-series
  (cons-stream 1
    (scale-stream
      (integrate-series sine-series)
      -1)))

3.64解答:

(define (stream-limit s tolerance)
  (define (stream-limit-iter stream current)
    (cond ((or (stream-null? stream) (null? (stream-car stream))) #f)
          (else
           (let ((next (stream-car stream)))
             (if (< (abs (- next current)) tolerance)
                   next
                  (stream-limit-iter (stream-cdr stream) next))))))
  (stream-limit-iter (stream-cdr s) (stream-car s)))

习题3.65:

(define (ln-summands n)
  (cons-stream (/ 1.0 n)
               (stream-map - (ln-summands (+ n 1)))))
(define ln-stream (partial-sums (ln-summands 1)))
(define ln-stream2 (euler-transform ln-stream))
(define ln-stream3 (accelerated-sequence euler-transform ln-stream))

经过欧拉变换加速过的级数收敛的很快,测测就知道

文章转自庄周梦蝶  ,原文发布时间2008-05-13

时间: 2024-09-20 03:16:29

sicp3.5.2、3.5.3节部分习题尝试解答的相关文章

sicp4.1.1-4.1.5节部分习题尝试解答(update)

    当将用scheme写的scheme求值器跑起来的时候,你不觉的兴奋是不可能的,真的太酷了,太magic了. 习题4.2,如果将application?判断放在define?判断之前,那么求值(define x 3)将把define当作一般的procedure应用于参数x和3,可是define是特殊的语法形式,而非一般过程,导致出错. 习题4.4,我的解答,eval增加两个判断:  ((and? exp)    (eval-and (and-exps exp) env))  ((or? e

sicp 2.4节小题尝试解答

这一节那是相当的有趣,抽象数据的多重表示:采用标志(tag)来区分和数据导向(data-directed)技术,稍微提了下消息传递.通过一张二维表格将类型.操作的分派机制介绍的很清楚,静态OO语言正是通过类型来决定消息的分派,而消息传递以列进行划分,每个类型都以过程来表征,也就是所谓的"智能数据对象",两者各有优缺点.当类型增加频繁时,消息传递风格的分派更容易扩展,当操作增加频繁时,反而是显式的类型分派更为容易扩展,这一点如果有OO设计经验应该很容易体会. 看看习题: 习题2.73,将

sicp 5.1节习题尝试解答

5.1 图就不画在机器上了,麻烦 5.2 用寄存器语言描述5.1题中的阶乘机器,加上了读取和打印,这里的解答全部在实际的寄存机器中验证过,但是仍然按照该节的表示法表示. (controller   fac-loop    (assign n (op read))    (assign product (const 1))    (assign counter (const 1))   iter-loop    (test (op >) (reg counter) (reg n))    (bra

[家里蹲大学数学杂志]第270期张恭庆编《泛函分析讲义》2.5节以前的习题参考解答

  张恭庆编<泛函分析讲义>第一章第1节 度量空间习题解答   张恭庆编<泛函分析讲义>第一章第2节 完备化习题解答   张恭庆编<泛函分析讲义>第一章第3节 列紧性习题解答   张恭庆编<泛函分析讲义>第一章第4节 线性赋范空间习题解答   张恭庆编<泛函分析讲义>第一章第5节 凸集与不动点习题解答   张恭庆编<泛函分析讲义>第一章第6节 内积空间习题解答   张恭庆编<泛函分析讲义>第二章第1节 线性算子与线性泛函习

《逆向工程权威指南》目录—导读

版权 逆向工程权威指南 • 著 [乌克兰] Dennis Yurichev 译 Archer 安天安全研究与应急处理中心 责任编辑 陈冀康 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn • 读者服务热线:(010)81055410 反盗版热线:(010)81055315 版权声明 逆向工程权威指南 Simplified Chinese translation c

c语言-关于C语言浮点的一个练习题

问题描述 关于C语言浮点的一个练习题 今天看深入理解计算机系统,浮点那一节一个习题.看不明白什么意思. 求指点,谢谢··· 题目: A.假定一个k位指数和n位小数的浮点格式,给出不能准确描述的的最小正整数的公式. (因为要想准确表示它需要n+1位小数) B.对于单精度格式(k=8,n=23),这个整数的数字值是多少? 答案: 这个练习帮助你思考什么数是不能准确表示的. 这个数的二进制表示是:1后面跟着n个0,其后再跟1,得到值:2的n+1次方+1. 当n=23时,值是:2的24次方+1=16 7

CMake初步(2)

转自:<你所不知的OSG>第一章:CMake初步(2) http://bbs.osgchina.org/forum.php?mod=viewthread&tid=1229&fromuid=3434   1.4 词法和语法 在开始本节的学习之前,我们先总结一下之前所了解到的CMake基本词法和命令. CMake命令通常使用如下的格式: COMMAND( ARG1 ARG2 - ) 复制代码 命令关键字之后使用括号来包含所有的参数:各个参数之间使用空格或者换行符分隔:而参数通常有以

《 C++程序设计:原理与实践(进阶篇.》导读

本节书摘来自华章出版社< C++程序设计:原理与实践(进阶篇)>一书中作者[美] 本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) 著 刘晓光 李忠伟 王刚 译     前 言 Programming: Principles and Practice Using C++, Second Edition 该死的鱼雷!全速前进. --Admiral Farragut 程序设计是这样一门艺术,它将问题求解方案描述成计算机可以执行的形式.程序设计中很多工作都花费在寻找求解方案以及对其求精上

手淘互动动效的探索

内容来源:2017年6月18日,手淘前端技术专家大漠在"2017 iWeb峰会·第六届HTML5峰会 "进行<手淘互动动效的探索>演讲分享.IT大咖说作为独家视频合作方,经主办方和讲者审阅授权发布.阅读字数:3089 | 6分钟阅读 嘉宾演讲视频 http://www.itdks.com/dakashuo/detail/2199 "互动,是连接用户的桥梁" 我们以前访问Web页面是没有动画和动效的,甚至点击跳转的功能都很少.那时是纯粹的文字展示,图片在网