1.44
Exercise 1.44: The idea of smoothing a function is an important concept in signal processing. If f is a function and dx is some small number, then the smoothed version of f is the function whose value at a point x is the average of f(x−dx), f(x), and f(x+dx). Write a procedure smooth that takes as input a procedure that computes f and returns a procedure that computes the smoothed f. It is sometimes valuable to repeatedly smooth a function (that is, smooth the smoothed function, and so on) to obtain the n-fold smoothed function. Show how to generate the n-fold smoothed function of any given function using smooth and repeated from Exercise 1.43.
Reusable
(define (compose f g)
(lambda (x) (f (g x))))
(define (square x) (* x x))
(define (repeated op n) (if (= n 0) (lambda (x) x)
(compose op (repeated op (- n 1)))))
((repeated square 2) 5)
Define the smooth function
(tan 1)
(define dx 0.1)
(define (average x y z) (/ (+ x y z) 3))
(define (smooth f) (lambda (x) (average (f (- x dx)) (f x) (f (+ x dx)))))
((smooth tan) 1)
(define (n-fold-smooth f n) (repeated (smooth f) n))
((n-fold-smooth tan 1) 1)
((n-fold-smooth tan 3) 1)