Exercise 1.44
Exercise 1.45
damp time should be n/2
But how to cast n to integer, in case I receive a float number?
And yet, it doesn’t work that well:
Exercise 1.46
iterative-improve return a procedure built from its two parameters
(define (average a b c) ;there should be a general way to get average
(/ (+ a b c) 3.0))
(define (smooth f)
(lambda (x)
(average (f x)
(f (- x 0.5))
(f (+ x 0.5)))))
(define (n-fold-smooth f n)
(repeated (smooth f) n))I need to check my answer through some examples, will find some later.Exercise 1.45
(define (nth-root x n damp-times)
(find-fixed-points ((repeated average-damp (damp-times n))
(lambda (y) (/ x (fast-expt y (- n 1)))))
1.0))
damp time should be n/2
(define (half n) (/ n 2))But how to cast n to integer, in case I receive a float number?
And yet, it doesn’t work that well:
;1 ]=> (nth-root 32 5 half)
;Aborting!: out of memoryExercise 1.46
iterative-improve return a procedure built from its two parameters
good-enough? and improve-guess. The returned procedure iteratively improves the guess until good enough.
(define (iterative-improve good-enough? improve-guess)
(define (get-guess guess)
(if (good-enough? guess)
guess
(get-guess (improve-guess guess))))
get-guess)
(define (iter-improve-sqrt x)
((iterative-improve (lambda (guess)
(< (abs (- (square guess) x))
0.01))
(average-damp (lambda (y) (/ x y))))
1.0))
(define (close-enough? v1 v2)
(< (abs (- v1 v2)) 0.00001))
(define (iter-improve-fixed-point f first-guess)
((iterative-improve (lambda (guess) (close-enough? guess (f guess)))
(lambda (guess) (f guess)))
first-guess))