SICP 锻炼 (1.40)解决摘要

SICP 锻炼1.40 是一个休闲的工作非常easy,但它看起来很复杂,单的一道题。

题目原题例如以下:

请定义一个过程cubic, 它和newtons-method过程一起使用在以下形式的表达式里:

(newtons-method (cubic a b c) 1)

能逼进三次方程

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2V5Ym9hcmRPVEE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="184" height="72" />

的零点。

题干是非常easy,就要求我们做个cubic过程,只是里面涉及newtons-method和三次方程的零点,假设仅仅看题目的话真不知道从哪里下手。

要完毕这道题,先得回去把书中得newtons-method过一遍,书中的newtons-method定义例如以下:

(define (newtons-method g guess)
  (fixed-point (newton-transform g) guess))

事实上就是求newton-transform的不动点。

那么这个newton-transform,就是牛顿变换又是什么呢?

书中的newton-transform定义例如以下:

(define (newton-transform g)
  (lambda (x)
    (- x (/ (g x) ((deriv g) x)))))

它的作用就是得出f(x),使f(x)例如以下:

f(x)= x - g(x) / Dg(x)

如书中1.3.4节介绍牛顿法时描写叙述的:

假设x-> g(x)是一个可微函数,那么方程g(x)=0 的一个解就是函数x->f(x)的一个不动点。当中f(x)= x - g(x) / Dg(x)

好,回到我们的题目,我们有一个函数

g(x)= 

我们要逼进函数g(x)的零点,就是求g(x)=0的一个解。

按以上的描写叙述,就是我们要求(newtons-method <g(x)> 1)。注意这里不是一个合法的Scheme语句。

这里的g(x)就是我们要做的cubic过程的返回值。

问题到了这里就变得非常easy了,只是是用cubic过程去生成一个表示三次方程的lambda过程而已,cubic过程定义例如以下:

(define (cubic a b c)
  (lambda (x)
    (+ (* x x x) (* a x x) (* b x) c)))

是不是结果有点出乎意料的简单呢?

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-11-10 00:27:19

SICP 锻炼 (1.40)解决摘要的相关文章

SICP 锻炼 (1.45)解决摘要

SICP 1.45是对前面非常多关于不动点的习题的总结. 题目回想了我们之前在1.3.3节使用的不动点寻找方法.当寻找y -> x/y 的不动点的时候,这个变换本身不收敛.须要做一次平均阻尼才干够. 对于y -> x/(y^2)这个变换也能够通过一次平均阻尼使它变得收敛. 只是一次平均阻尼对于四次方程是不够的,就是说,对y -> x/(y^3)这种变换,一次平均阻尼不足以使它收敛,须要做两次平均阻尼才行. 题目遵从一直以来的抽象原则.要求我们去多做几次測试,找出 y -> x /

SICP 锻炼 (2.15)解决摘要:深入思考间隔误差

SICP 2.15 是接着 题目 2.14 的, 题目 2.14中提到了Alyssa设计的区间计算模块在并联电阻计算时会出现故障,这个问题是Lem发现的. 接着,一个叫Eva的人也发现了这个问题.同一时候她还有更深入的思考. Eva认为.假设一个公式能够写成一种形式,当中具有非准确性的变量不反复出现.那么Alyssa的系统产生的区间的限界会更紧一些. 因此,她认为在计算并联电阻时,公式"1/(1/R1 + 1/R2)"比公式"(R1*R2)/ (R1 + R2)"要

SICP 练习 (2.9)解决摘要:宽度和区间运算的关系间隔

SICP 2.9 像是一个数学题,要我们证明区间的和与差的宽度是被加和被减的区间的宽度的函数,而对于乘法和除法来说不成立. 书中所谓宽度就是区间起点和终点差的一半.以我看来更像是区间宽度的一半.无论怎么样.差点儿相同是一个意思. 假设你把区间看成是一个线段的话,所谓宽度应该就是起点和终点的差.假设一定要把宽度的一半记作是宽度也无所谓的. 证明区间的和的宽度是被加区间的宽度的函数这一点是比較easy证明的.看以下的证明步骤: 假设有区间1是(a1 b1),还有区间2是(a2 b2), 那么区间1的

SQLServer2008R2 error 40解决方法

实际遇到的问题,以下为搜到的解决方案,亲测可用 转自 http://blog.csdn.net/laga516/article/details/7696577 最近一直在配置服务器, 这当中最头疼的就是配置数据库 我们用的是SQL Server 数据库 2008 版本,数据库配置完之后从另一台电脑访问数据库死活连接不上,提示信息如下 “ 无法连接到 *.*.*.*. 在于SQL Server建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL

【SICP练习】40 练习1.45

 练习1.45 如果看到前面的文章,应该知道我喜欢将某个变量n先设成一个固定的数比如3.4什么的.这里我们依旧如此,先来看看如何写出开四次方根的过程.这道题的目的旨在让我们好好回顾前面的内容,毕竟只剩下一道题我们就完完全全的解决了第一章. 下面我来带大家一起回顾一下.fixed-point是以1个函数和一个初始猜测为参数的函数,用来计算不动点.所谓的不动点就是x=f(x)时的点x.比如这个式子,(fixed-point square 1.0),它会返回1,因为1的平方等于1. average

SICP 习题 (1.40)解题总结

SICP 习题1.40 是一道题干很简单,但是看起来很复杂,本质其实比较简单的一道题. 题目原题如下: 请定义一个过程cubic, 它和newtons-method过程一起使用在下面形式的表达式里: (newtons-method (cubic a b c) 1) 能逼进三次方程 的零点. 题干是很简单,就要求我们做个cubic过程,不过里面涉及newtons-method和三次方程的零点,如果只看题目的话真不知道从哪里下手. 要完成这道题,先得回去把书中得newtons-method过一遍,书

2.9 DRBD编译安装中出现的问题及解决小结

问题1: 设置primary node时提示不能成功UpToDate data: # drbdadm primary r0 r0: State change failed: (-2) Need access to UpToDate data Command 'drbdsetup primary r1' terminated with exit code 17 解决: # drbdadm primary --force r0          ##强制设置 # drbd-overview 1:r0

ubuntu 解决cache逐渐变大导致oom-killer将某些进程杀死的情况

最近遇到了一个程序运行时间长后,操作系统由于out of memory 导致系统的oom-killer将程序直接杀死的问题: 错误提示大概为: Out of memory: Kill process 20011 (main) score 58 or sacrifice child Killed process 20011 (main) total-vm:21688384kB, anon-rss:715844kB, file-rss:816256kB 这些错误可以在linux系统的/var/log

WebApi学习总结系列第四篇(路由系统)

由于工作的原因,断断续续终于看完了<ASP.NET Web API 2 框架揭秘>第二章关于WebApi的路由系统的知识. 路由系统是请求消息进入Asp.net WebApi的第一道屏障,其根本目的利用注册的路由表对请求的URI进行解析以确定目标HttpController和Action的名称,以及与某个Action方法某个参数进行绑定的路由变量. Asp.net webApi中的路由系统和Asp.net中的路由系统很相似,也有Route,只是WebApi的路由系统又独立于Asp.net的路由