SICP 1-33 1-34 1-35

ex1-32 要求利用过程返回值给出一个用于计算 f(f (x))这样的函数过程

ex1-33要求计算一个函数的平滑函数g(x)=(f(x-dx)+f(x)+f(x+dx))/3

并利用ex1-32给出的过程进行多次的平滑运算以下,给出代码

(define (smooth f)
        (lambda (x)
                (/ (+ (f (- x .001)) (f x) (f (+ x .001))) 3)))
(define (repeated f x)
        (lambda (times)
                (if (= times 0) x
                        ((repeated f (f x)) (- times 1)))))
(define (n-folds f x times)
        ((repeated (smooth f) x)times))

ex1-34要求利用newton求根方式 给出(newton (cubic a b c) 1) 来计算x^3+a*x^2+b*x+c的根

以下是代码

(define (f x) (- (* x x x) 3))
(define (deriv f dx)
        (lambda (x) (/ (- (f (+ x dx)) (f x)) dx)))
(define (Newton f guess)
        (let
                ((fx (f guess)))
                (let
                        ((new (- guess (/ fx ((deriv f .001) guess)))))
                        (if     (< (abs fx) .001)
                                guess
                                (Newton f new)))))
(define (cubic a b c)
        (lambda (x)
                (+ (* x x x) (* a (* x x)) (* b x) c)))

ex1-35 要求利用high-order process的形式进行抽象

将newton 以及之前的fixed-point进行 抽象化

(iterative test improve x) 以下给出代码

(define (iterative test improve x)
	(if (test x) x (iterative test improve (improve x))))
(define (newton f x)
	(iterative
		(lambda (x) (< (abs (f x)) .001))
		(lambda (x) (- x (/ (f x) (/ (- (f (+ x .001)) (f x)) .001))))
		x))
(define (fixed-point f x)
	(iterative
		(lambda (x) (< (abs (- (f x) x)) .001))
		f
		x))

顺便热烈庆祝一下完成了第一单元的任务(才发现1985版的和中文译本那个2nd习题都不一样,难怪我都找不到答案)

时间: 2024-11-06 15:26:45

SICP 1-33 1-34 1-35的相关文章

Part 34 to 35 Talking about multiple class inheritance in C#

Part 34 Problems of multiple class inheritance Part 35 Multiple class inheritance using interfaces

【转】ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)

chr(9) tab空格       chr(10) 换行      chr(13) 回车        Chr(13)&chr(10) 回车换行       chr(32) 空格符       chr(34) 双引号       chr(39) 单引号 chr(33) !        chr(34) "        chr(35) #        chr(36) $        chr(37) %        chr(38) &        chr(39) '   

Play Framework Web开发教程(33): 结构化页面-组合使用模板

和你编写代码类似,你编写的页面也可以由多个小的片段组合而成,这些小的片段本身也可以由更小的片段构成.这些小片段通常是可以在其它页面重复使用的:有些部分可以用在所有页面,而有些部分是某些页面特定的.本篇介绍如何使用这些可重用的小模板来构成整个页面.Includes到目前为止的例子,我们只显示了HTML的片段,没有实例显示整个页面.下面我们给出完整的显现产品列表的代码和模板: 1 def catalog() = Action { 2     val products = ProductDAO.lis

ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(..

chr(9) tab空格       chr(10) 换行      chr(13) 回车        Chr(13)&chr(10) 回车换行       chr(32) 空格符       chr(34) 双引号       chr(39) 单引号 chr(33) !        chr(34) "        chr(35) #        chr(36) $        chr(37) %        chr(38) &        chr(39) '   

(转) ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(

chr(9) tab空格       chr(10) 换行      chr(13) 回车        Chr(13)&chr(10) 回车换行       chr(32) 空格符       chr(34) 双引号       chr(39) 单引号 chr(33) !        chr(34) "        chr(35) #        chr(36) $        chr(37) %        chr(38) &        chr(39) '   

35款加速网站开发的 CSS 开发工具

网络有很很多的 CSS 工具和教程可用,它可以帮助设计人员和开发人员轻松.快速地学习 CSS 技术.这些工具中在高效开发 Web 应用程序中发挥重要作用. 在这篇文章中,我们收集了35个最好的 CSS 工具用于加速网站开发,如创建 CSS 菜单,动画,三维模型,响应式页面,动画按钮等等.我们希望你会发现下面的 CSS 工具能够满足您的需求. 您可能感兴趣的相关文章 精心推荐几款超实用的 CSS 开发工具 精心挑选的在线 CSS3 代码生成工具 24款非常实用的CSS3工具终极收藏 推荐10个特别

iScroll5 API速查随记

版本 针对iScroll的优化.为了达到更高的性能,iScroll分为了多个版本.你可以选择最适合你的版本.目前我们有以下版本: iscroll.js,这个版本是常规应用的脚本.它包含大多数常用的功能,有很高的性能和很小的体积. iscroll-lite.js,精简版本.它不支持快速跳跃,滚动条,鼠标滚轮,快捷键绑定.但如果你所需要的是滚动(特别是在移动平台) iScroll 精简版 是又小又快的解决方案. iscroll-probe.js,探查当前滚动位置是一个要求很高的任务,这就是为什么我决

iOS开发——网络编程OC篇&amp;Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

浅谈h5移动端页面的适配问题

一.前言 昨天唠叨了哈没用的,今天说点有用的把.先说一下响应式布局吧,我一直认为响应式布局的分项目,一下布局简单得项目做响应式还是可以可以得.例如博客.后台管理系统等.但是有些会认为响应式很牛逼,尤其是在不懂前端的人眼中,一味的追求响应式布局,我觉得复杂的布局项目做响应式还不如做二套样式,因为响应式的样式混在一起真的维护起来是恨费劲的.可能我说的不对,但是发表 一点点自己的看法.说道这里就想说一下移动端的布局,有很多人就是想把手机端得程序兼容ipad,我就觉得这个很不可思议为什么要这么做得,命名

微信开发 select选择框

最近在该企业微信的功能,要做一个微信界面,要使用select来做下拉选择框 部分前台HTML代码: 在选择分享组的时候,要从后台查询数据来做选择项 1 <form:form id="imgForm" modelAttribute="uploadImg" action="${oauthPath}/img/${agentKey}/submit" method="post"> 2 <input id="i