# 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)