SICP 독서여자회 #16 2.1.4(2)
14928 단어 SICP
Ex2.11
;ついでに Ben はまた謎めいたコメントを残した。
;“区間の両端点の符号をテストすると mul-interval は 9 パターン
;に場合分けできて、2 回以上のかけ算が必要になるのはその中のひ
;とつだけだよ。” Ben の提案に従って、この手続きを書き直せ。
메모지크로스 기호만 있는 사람은 두 번의 곱셈이 필요하다.
이곳의 그림은 간단하고 이해하기 쉽다.
(define (make-center-width c w)
(make-interval (- c w) (+ c w)))
(define (center i)
(/ (+ (lower-bound i) (upper-bound i)) 2))
(define (width i)
(/ (- (upper-bound i) (lower-bound i)) 2))
Ex 2.12;; Ex 2.12
;; SAMPLE
(define interval-pp (make-interval 9.0 11.0))
(define interval-mp (make-interval -2.0 2.0))
(define interval-mm (make-interval -10.0 -2.0))
;; 中央値と%の許容誤差を取る
(newline)
(display "=========Ex 2.12==========")
(newline)
(define (percent i)
(* (/ (width i) (center i)) 100))
(define (make-center-percent i)
(cons (center i) (percent i)))
(define (print-center-interval i)
(print "[ " (car i) "±" (cdr i) "%" " ]\n"))
(print-interval interval-pp)
(print-center-interval (make-center-percent interval-pp))
;9. ~ 11.
;[ 10.±10.% ]
(print-interval interval-mp)
(print-center-interval (make-center-percent interval-mp))
;-2. ~ 2.
;[ 0.±+inf.0% ]
Ex 2.13;; 2.13
; パーセント許容誤差が小さいという前提のもとで
;は、二つの区間の積のパーセント許容誤差を因数の許容誤差の積
;によって近似する簡単な式が存在することを示せ。すべての数値
;は正であると仮定して問題を単純化してもよい。
;意味がわからない(((((((((((っ・ω・)っ
Ex 2.14;; 2.14
(newline)
(display "=========Ex 2.14==========")
(newline)
(define A (make-interval 6 10))
(define B (make-interval 19.0 21.0))
(print "A:")
(print-center-interval (make-center-percent A))
(print "B:")
(print-center-interval (make-center-percent B))
(print "par1: ")
(print-interval (par1 A B))
(print "par2: ")
(print-interval (par2 A B))
;par1: 3.6774193548387095 ~ 8.4
;par2: 4.5600000000000005 ~ 6.774193548387097
(print "A/A: ")
(define AA (div-interval A A))
(print-interval AA)
;; これが1にならない
(print "A/B: ")
(define AB (div-interval A B))
(print-interval (make-center-percent AB))
;A/A: 1.1333333333333333 ~ 47.058823529411754
;A/B: .40601503759398494 ~ 29.629629629629626
다음 노트http://www.serendip.ws/archives/553
2.15
"변수를 쓸수록 반복되지 않고 엄격한 오차 경계를 되돌릴 수 있다"는 게 사실인가요?
구간에 대해 사칙연산을 하면 풀린 구간이 클수록
width는 연산 후 작아지지 않습니다.
とはいえ、加算と乗算で誤差の広がる範囲が同じわけでもないし、
一概に区間が出てくる回数が少ないほど小さいと言えるわけでもない・・・??
그러나 문제의 취지는 다음과 같다.代数として等価な式であれば、
区間が少ないほうが誤差が小さい
그런가요?R1을 구간으로 하는 경우
1대-R1/R1 오차 없음
-(R1*R1)/R1과 비교하면 R1에 오차가 생기지 않습니다.
(newline)
(display "=========Ex 2.15==========")
(newline)
(newline)
(display "========= diff > 1 ==========")
(newline)
(define i1 (make-interval 5.0 7.0)) ;width 1
(define i2 (make-interval -5 -2))
(print (width (add-interval i1 i2)) "\n")
(print (width (mul-interval i1 i2)) "\n")
(print (width (sub-interval i1 i2)) "\n")
(print (width (div-interval i1 i2)) "\n")
(newline)
(display "========= diff < 1 ==========")
(newline)
(define i1 (make-interval 1 5)) ;width2
(define i2 (make-interval 1 1.2))
(print (width (add-interval i1 i2)) "\n")
(print (width (mul-interval i1 i2)) "\n")
(print (width (sub-interval i1 i2)) "\n")
(print (width (div-interval i1 i2)) "\n")
;========= diff > 1 ==========
;2.5
;12.5
;2.5
;1.25
;全部元のwidth(1)以上
;========= diff < 1 ==========
;2.1
;2.5
;2.1
;2.0833333333333335
;全部元のwidth(2)以上
2.16다음 번 전입
Reference
이 문제에 관하여(SICP 독서여자회 #16 2.1.4(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cocodrips/items/a93348721b30c42eafa1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)