红色壁虎(三磊)

Red Gecko 石子虽平凡,聚少亦成多。
随笔 - 24, 文章 - 0, 评论 - 143, 阅读 - 50973
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1.1.7 牛顿法求平方根

 

 

 (define (average x y)

    (/ (+ x y) 2))
(define (improve guess x)
    (average guess (/ x guess)))
(define (good-enough? guess x)
    (< (abs (- (* guess guess) x) )0.0000000000001) )
(define (sqrt-iter guess x)
    (if (good-enough? guess x)
    guess
    (sqrt-iter (improve guess x) 
               x)
    ))
(define (sqrt-g x)
  (sqrt-iter 1.0 x))

 

 

 

Welcome to DrRacket, version 5.1.1 [3m].
Language: R5RS; memory limit: 128 MB.
> (sqrt-g 2)
1.414213562373095
> (sqrt 2)
1.4142135623730951
> (sqrt-g 3)
1.7320508075688772
> (sqrt 3)
1.7320508075688772

>  

 

 

;练习 1.6 .newif
 (define (newif predicate  thenClause elseClause)
    (cond (predicate thenClause)
          (else elseClause)))
 (define (newSqrt-iter guess x)
    (newif (good-enough? guess x)
           guess
           (newsqrt-iter (improve guess x)
                         x)))
 (define (newSqrt-g x)

    (newSqrt-iter 1.0 x)) 

 

Welcome to DrRacket, version 5.1.1 [3m].
Language: R5RS; memory limit: 128 MB.
> (newSqrt-g 2)
Interactions disabled //因为超出内存使用量而终止,死循环,原因:函数使用 应用序 ,先求参数值后应用规则。

 

 

 ;练习1.7

 (define (good-enough? guess x)
    (< (abs (- (improve guess x) guess) )0.00000000000000001) )

 

 > (sqrt 2000000000000000000000000000000000000000000000000)

1.414213562373095e+024

> (sqrt 0.0000000000000000000000000000000000000000000000002)

 4.472135954999579e-025

>

 

 

;练习1.8
  (define (CubeImprove y x)
    (/ (+ ( / x (* y y)) (* 2 y)) 3))
  (define (CubeGood? guess x)
    (< (abs (- (CubeImprove guess x) guess)) 0.0000000001))
 (define (Cube-iter guess x)
    (if (CubeGood? guess x)
        guess
        (Cube-iter (CubeImprove guess x) x)))
 (define (CubeGood? guess x)
    (< (abs (- (CubeImprove guess x) guess)) 0.0000000001))
 (define (Cube x)

    (Cube-iter 1.0 x)) 

 

 

 Welcome to DrRacket, version 5.1.1 [3m].

Language: R5RS; memory limit: 128 MB.
> (Cube 8)
2.000000000012062
> (Cube 27)
3.0000000000000977
> (Cube -64)
-4.000000000004644
> (Cube -125)
-5.000000000076353

 

 

 

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示