文責: | @iriya_ufo |
---|
テキストにある good-enough? テストは以下のようなものである.
(define (good-enough? guess x)
(< (abs (- (square guess) x)) 0.001))
また一番初めの予測値を 1.0 としている.
ここで以下の2つの場合の数を考える.
そこで guess の変化に注目して設計すると, 大きい数, 小さい数にたいして有効に働く.
(define (sqrt-iter old-guess new-guess x)
(if (good-enough? old-guess new-guess x)
new-guess
(sqrt-iter new-guess (improve new-guess x)
x)))
(define (improve x y)
(average x (/ y x)))
(define (average x y)
(/ (+ x y) 2))
(define (good-enough? old-guess new-guess x)
(< (abs (- 1.0 (/ old-guess new-guess))) 0.001))
(define (sqrt x)
(sqrt-iter 1.0 x x))