4 (defn sum-of-squares [x y]
5 (+ (square x) (square y)))
8 (sum-of-squares (+ a 1) (* a 2)))
14 ;; 1.1.7 Square root finding using Newton's method
18 (defn improve [guess x]
19 (average guess (/ x guess)))
21 (defn good-enough? [guess x]
22 (< (myabs (- (square guess) x)) 0.001))
24 (defn sqrt-iter [guess x]
25 (if (good-enough? guess x)
27 (sqrt-iter (improve guess x)
34 ;; An alternative strategy for implementing good-enough? is to watch how guess
35 ;; changes from one iteration to the next and to stop when the change is a very
36 ;; small fraction of the guess.
37 (defn sqrt-iter [old-guess new-guess x]
38 (if (good-enough? old-guess new-guess x)
40 (sqrt-iter new-guess (improve new-guess x)
43 (defn improve [guess x]
44 (average guess (/ x guess)))
49 (defn good-enough? [old-guess new-guess x]
50 (< (/ (myabs (- new-guess old-guess)) new-guess) 0.0001))
55 user> (sqrt (square 0.01))
57 user> (sqrt (square 0.001))
59 user> (sqrt (square 0.0001))
61 user> (sqrt (square 0.02))
63 user> (sqrt (square 0.002))
65 user> (sqrt (square 4))
67 user> (sqrt (square 20))
69 user> (sqrt (square 25))
82 ;; hiding the non-public procedure definitions
83 (defn- sqrt-iter [guess x]
84 (if (good-enough? guess x)
86 (sqrt-iter (improve guess x)
89 (defn- improve [guess x]
90 (average guess (/ x guess)))
95 (defn- good-enough? [guess x]
96 (< (myabs (- (square guess) x)) 0.001))