SICP 锻炼 (1.45)解决摘要

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)需要计算阻尼的平均数量。


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值