問題2.7-2.13
問題2.7
(define (make-interval a b) (cons a b)) (define (lower-bound z) (car z)) (define (upper-bound z) (cdr z))
問題2.8
(define (sub-interval x y) (make-interval (- (lower-bound x) (upper-bound y)) (- (upper-bound x) (lower-bound y))))
問題2.9
Add
[(a-Δa) + (b-Δb), (a+Δa) + (b+Δb)]
=> [a+b-(Δa+Δb), a+b+(Δa+Δb)]
Sub
[(a-Δa) - (b+Δb), (a+Δa) - (b-Δb)]
=> [a-b-(Δa+Δb), a-b+(Δa+Δb)]
Mul
(a±Δa) * (b±Δb)
=> ab ± (aΔb ± Δab + ΔaΔb)
てなことで、いいのかな。和と差の誤差成分は、それぞれの和と差で決まるけど。乗除の誤差には、それ以外の項が存在する。
問題2.10
カンニングしました。
http://oss.timedia.co.jp/show/SICP/ex-2.10
(define (div-interval x y) (let ((uby (upper-bound y)) (lby (lower-bound y))) (if (< (* uby lby) 0) (error "Divided by an interval spaning zero") (mul-interval x (make-inteval (/ 1.0 uby) (/ 1.0 lby))))))
問題2.11
正負で場合分けしろってこと? めんどっちぃので、省略。
問題2.12
(define (make-center-percent c w) (make-interval (- c (* c (/ w 100.0))) (+ c (* c (/ w 100.0))))) (define (percent i) (let ((cv (center i)) (wv (width i))) (* (/ wv cv) 100)))
この辺はやるのみ、って感じ。
問題2.13
(a±Δa) * (b±Δb)
=> ab ± (aΔb ± Δab + ΔaΔb)
=> ab ± (aΔb ± Δab)
=> ab ± (Δb/b ± Δa/a)ab
ΔaΔbは無視できると。
何か、この辺の問題はどうでもいい感じ。