Exercise 5.3: Design a machine to compute square
roots using Newton’s method, as described in 1.1.7:
(define (sqrt x)
(define (good-enough? guess)
( (abs (- (square guess) x)) 0.001))
(define (improve guess)
(average guess (/ x guess)))
(define (sqrt-iter guess)
(if (good-enough? guess)
guess
(sqrt-iter (improve guess))))
(sqrt-iter 1.0))
Begin by assuming that good-enough? and improve operations are
available as primitives. Then show how to expand these in terms of arithmetic
operations. Describe each version of the sqrt machine design by drawing
a data-path diagram and writing a controller definition in the register-machine
language.
练习 5.3:如 1.1.7 节所述,设计一台用牛顿法计算平方根的机器:
(define (sqrt x)
(define (good-enough? guess)
( (abs (- (square guess) x)) 0.001))
(define (improve guess)
(average guess (/ x guess)))
(define (sqrt-iter guess)
(if (good-enough? guess)
guess
(sqrt-iter (improve guess))))
(sqrt-iter 1.0))
先假设 good-enough? 和 improve 操作作为基本操作已经可用,然后说明如何将它们展开为算术操作。用数据通路图和寄存器机器语言中的控制器定义来描述每个版本的 sqrt 机器设计。
(define (sqrt x)
(define (good-enough? guess)
( (abs (- (square guess) x)) 0.001))
(define (improve guess)
(average guess (/ x guess)))
(define (sqrt-iter guess)
(if (good-enough? guess)
guess
(sqrt-iter (improve guess))))
(sqrt-iter 1.0))