SICP 习题 (1.45)解题总结
2014-09-18 23:32
267 查看
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次平均阻尼呢?单靠猜当然不行,我们需要测试几次。
为了方便测试,我写了下面这样的方法:
这样就可以随意指定n次方程和对应的平均阻尼次数,从5次方程开始测试,看看测试结果是否符合我的猜测。
测试发现我的猜测太不靠谱了,测试发现4,5,6,7次方程都可以通过2次平均阻尼实现收敛。
继续猜得话就猜(lg n)次了,说实话我的数学敏感度还没到一下就往(lg n)次猜得程度,看了自己的很多次测试结果,结合网上一些同学们的解题过程才定位到(lg n)上的。
当然,这次猜对了。
最终我写的方法如下:
以上方法调用了之前定义的用于测试的n-rt过程,只是简单的使用(lg n)去计算需要平均阻尼的次数。
题目回顾了我们之前在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.5)解题总结:应用序和正则序
- SICP 习题 (1.6) 解题总结
- SICP 习题 (1.14)解题总结
- SICP 习题 (1.19) 解题总结
- SICP 习题 (1.18) 解题总结
- SICP 习题(1.1,1.2,1.3,1.4)解题总结,起步。
- SICP 习题 (1.23) 解题总结
- SICP 习题 (1.14)解题总结
- SICP 习题 (1.13) 解题总结
- SICP 习题 (1.21) 解题总结
- SICP 习题 (1.7) 解题总结:改进版的牛顿法求平方根
- SICP 习题 (1.9) 解题总结:迭代计算过程和递归计算过程
- SICP 习题 (1.8) 解题总结
- SICP 习题 (1.15) 解题总结
- SICP 习题 (1.11) 解题总结:加强版斐波那契数
- SICP 习题 (1.6) 解题总结:对if语句的特殊处理
- SICP 习题 (1.8) 解题总结:牛顿法求立方根
- SICP 习题 (1.10)解题总结:阿克曼函数
- SICP 习题 (1.16)解题总结
- SICP 习题 (1.22) 解题总结