SICP - Solution: Exercise 1.44

Oct 29, 2018 06:07 · 152 words · 1 minute read

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.

Solution

By definition, the smooth function is:

(define (smooth f)
  (lambda (x)
    (/ (+ (f (- x dx)) (f x) (f (+ x dx))) 3)))

Then we can define smooth-nth:

(define (smooth-nth f n)
  ((repeated smooth n) f))