SICP 問題2.12

2017/11/15

中央値とパーセント相対許容誤差をとり, 望み通りの区間を返す構成子 make-center-percentを定義せよ. また区間のパーセント相対許容誤差を返す選択子percentを定義しなければならない. center選択子は上に示したのと同じでよい.

これは簡単そう。

(define (make-center-percent c p)
  (make-center-width c (/(* c (/ p 100)) 2)))

(define (percent i)
  (* (* (/ (width i) (center i)) 2) 100))

percent

(* c (/ (/ p 100) 2)) = w

※ c = center, p = percent, w = width

の2次方程式をとけば良いので、

(/ (/ p 100) 2) = (/ w c)
(/ p 100) = (* (/ w c) 2)
p = (* (* (/ w c) 2) 100)

になので、これをschemeで書き下せばOK。