SICP 問題1.44

2017-09-04

関数の平滑化(smoothing)の考えは信号処理に重要な概念である.
f を関数, dxを微小な値とすると, fの平滑化したものは, xでの値がf(x - dx), f(x), f(x + dx)の平均であるような関数である.
入力としてf を計算する手続きをとり, fの平滑化関数を計算する手続きを返す手続きsmoothを書け.
時には関数を繰り返し平滑化する(つまり平滑化関数を平滑化し, これを繰り返す), n重平滑化関数(n-fold smoothed function)を得るのは有益である.
smoothと問題1.43のrepeated を使い, 与えられた関数のn重平滑化関数を作る方法を示せ.

言われた通り実装しただけで、これであってるのかわからない。

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

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

※次からの問題1.45と1.46はスキップ。