SICP 1.45是对前面非常多关于不动点的习题的总结。

题目回想了我们之前在1.3.3节使用的不动点寻找方法。当寻找y -> x/y 的不动点的时候,这个变换本身不收敛。须要做一次平均阻尼才干够。

对于y -> x/(y^2)这个变换也能够通过一次平均阻尼使它变得收敛。

只是一次平均阻尼对于四次方程是不够的,就是说,对y -> x/(y^3)这种变换,一次平均阻尼不足以使它收敛,须要做两次平均阻尼才行。

题目遵从一直以来的抽象原则。要求我们去多做几次測试,找出 y -> x / (y^n)这种变换须要几次平均阻尼。

先看看眼下我们知道的规律,

y -> x/(y^1) 须要1次平均阻尼

y -> x/(y^2) 须要1次平均阻尼

y -> x/(y^3) 须要2次平均阻尼

简单猜得话会不会是须要n/2次平均阻尼呢?

单靠猜当然不行。我们须要測试几次。

为了方便測试,我写了以下这个方案:

(define (n-rt x n try-average-time)
(fixed-point ((repeat average-damp try-average-time) (lambda (y) (/ x (fast-expt y (- n 1)) ) )) 1.0))

这样就能够任意指定n次方程和相应的平均阻尼次数。从5次方程開始測试,看看測试结果是否符合我的推測。

測试发现我的推測太不靠谱了。測试发现4,5,6,7次方程都能够通过2次平均阻尼实现收敛。

继续猜得话就猜(lg n)次了,说实话我的数学敏感度还没到一下就往(lg n)次猜得程度,看了自己的非常多次測试结果,结合网上一些同学们的解题过程才定位到(lg n)上的。

当然。这次猜对了。

终于我写的方法例如以下:

(define (final-n-root x n)
(define (nth-root n)
(n-rt x n (lg n)))
(nth-root n))

以上方法调用了之前定义的用于測试的n-rt过程,仅仅是简单的使用(lg n)需要计算阻尼的平均数量。

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

SICP 锻炼 (1.45)解决摘要的更多相关文章

  1. SICP 锻炼 (1.40)解决摘要

    SICP 锻炼1.40 是一个休闲的工作非常easy,但它看起来很复杂,单的一道题. 题目原题例如以下: 请定义一个过程cubic, 它和newtons-method过程一起使用在以下形式的表达式里: ...

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

    SICP 2.15 是接着 题目 2.14 的, 题目 2.14中提到了Alyssa设计的区间计算模块在并联电阻计算时会出现故障,这个问题是Lem发现的. 接着,一个叫Eva的人也发现了这个问题.同一 ...

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

    SICP 2.9 像是一个数学题,要我们证明区间的和与差的宽度是被加和被减的区间的宽度的函数,而对于乘法和除法来说不成立. 书中所谓宽度就是区间起点和终点差的一半.以我看来更像是区间宽度的一半.无论怎 ...

  4. SICP 练习 (2.12)解决摘要 :不同的实现时间

    SICP 2.12 要求我们定义一个构造函数make-center-percent,它接收两个參数,分别代表中心点和一个误差百分比.我们须要通过这个构造函数产生一个区间.此外还须要定义一个选择函数pe ...

  5. Nginx常见错误解决办法

    报错: nginx: [error] CreateFile() "C:\mytools\nginx-1.8.1/logs/nginx.pid" failed (2: The sys ...

  6. DotNet基础

    DotNet基础 URL特殊字符转义 摘要: URL中一些字符的特殊含义,基本编码规则如下: 1.空格换成加号(+) 2.正斜杠(/)分隔目录和子目录 3.问号(?)分隔URL和查询 4.百分号(%) ...

  7. Remoting接口测试工具

    动手写一个Remoting接口测试工具 基于.NET开发分布式系统,经常用到Remoting技术.在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本 ...

  8. Matconvnet笔记(一)

    参考网址:http://www.vlfeat.org/matconvnet/ 内容参考博客:http://blog.sina.com.cn/s/blog_92cd3a1c0102x1ch.html M ...

  9. Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录

    一.基础知识梳理MUA (Mail User Agent) MUA 既是"邮件使用者代理人",因为除非你可以直接利用类似 telnet 之类的软件登入邮件主机来主动发出信件,否则您 ...

随机推荐

  1. 基于HTML5气3D仿真培训系统

    根据最近的上线HTML5的燃气3D培训仿真系统.曾经的老系统是採用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但由于这次新产品需求要求能 ...

  2. H.265/HEVC Codec 编解码 (MP4 和 TS)

    1. H.265/HEVC 播放器 1) VLC media player 2.1.3 (眼下不支持H.265 TS播放) 2)ffmpeg中的ffplay (如:ffplay  hevc.ts) 3 ...

  3. android 原生应用、Web应用、混合应用优缺点分析

    近期开发几个项目,牵涉到android的几种开发模式.对于原生态开发.web 应用开发以及混合模式开发,本人觉得并非哪一种就是最好的,哪一种就是最差的,这个全然是依据项目的实际需求,选择一种合适的开发 ...

  4. NSUserDefaults API简单的介绍和使用英文文件

    Overview The NSUserDefaults class provides a programmatic interface for interacting with the default ...

  5. Windows Phone 8 MD5

    using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Wi ...

  6. -ms-grid -ms-grid-rows -ms-grid-row -ms-grid-columns -ms-grid-column

    style: display:-ms-grid-ms-grid-columns和-ms-grid-rows的值可以为: >标准长度单位,如像素 >对象宽度(对于列)或高度(对于行)的百分比 ...

  7. SQL Server系统数据库备份最佳实践

    原文:SQL Server系统数据库备份最佳实践 首先了解主要的系统数据库: 系统数据库 master 包含登录信息和其他数据库的核心信息 msdb 存储作业.操作员.警报.备份还原历史.数据库邮件信 ...

  8. 依据Uri获得sd卡图片

    <pre name="code" class="java">String mBigImage = URLEncoder.encode(mImageU ...

  9. JAVA —— console输入输出

    import java.io.*; public class ConsoleIOTest { public static void main(String[] args) { BufferedRead ...

  10. 于XAML导入命名空间的代码

    例如,下面的代码到指定的命名空间.不仅导入的命名空间,并且还为指定的命名空间前缀local.当然,你也可以指定一个前缀为另一个名称,这可以定义.导入后,市民可以在命名当前空间XAML使用代码.例如,在 ...