SICP 연습문제 2.9 친절한 풀이

문제

구간 값의 폭width이란, 구간의 상한에서 하한을 빼고서 반으로 나눈 값을 말한다. 폭은 구간 값이 정확하지 않은 정도를 나타낸다. 구간 값의 산술 연산에서는 인자가 되는 두 구간 값의 폭만 가지고, 결과 값의 폭을 구할 수 있는 연산도 있으나, 그렇지 않은 연산도 있다. 두 구간 값을 더해서(또는 빼서) 나온 구간 값의 폭은, 더하고 있는(또는 빼고 있는) 구간 값의 폭으로도 구할 수 있다는 것을 밝혀라. 그리고 두 구간 값을 곱하거나 나눠서 나온 구간 값의 폭은 그렇게 구하지 못한다는 것을 뒷받침하는 보기를 찾아보아라.

문제로 부터 얻은 것

구간 산술 연산에서 폭의 값만 알아도 할 수 있는 계산이 있다는 것을 알았습니다.

문제풀이

a. 구간 값의 폭으로 결과의 폭을 구할 수 있는 연산

덧셈 연산과 뺄셈 연산은 구간 값의 폭을 알면, 결과의 폭도 알 수 있다는 것을 직관적으로 알 수 있습니다.
두 구간인 a와 b를 아래와 같이 상정하겠습니다.

a=(awa , a+wa)a = (a-w_a \ , \ a+w_a)

b=(bwb , b+wb)b = (b-w_b \ , \ b+w_b)



a와 b에 대해 a+b와 a-b는 다음과 같습니다.

a+b=((awa)+(bwb) , (a+wa)+(b+wb))a+b = ((a-w_a) + (b-w_b) \ , \ (a+w_a) + (b+w_b))

ab=((awa)(b+wb) , (a+wa)(bwb))a-b = ((a-w_a) - (b+w_b) \ , \ (a+w_a) - (b-w_b))



양 경우에서 구간의 폭은 a,ba,b의 값과 상관없이 wa+wbw_a+w_b라는 것을 알 수 있습니다.

b. 구간 값의 폭으로 결과의 폭을 구할 수 없는 연산

위의 a,b에 대해 곱셈도 해보겠습니다.

a×ba × b



a×ba × b의 하한은 아래의 경우 중 가장 작은 값이고, 상한은 가장 큰 값입니다.

p1=(awa)×(bwb)p_1=(a-w_a) × (b-w_b)

p2=(awa)×(b+wb)p_2=(a-w_a) × (b+w_b)

p3=(a+wa)×(bwb)p_3=(a+w_a) × (b-w_b)

p4=(a+wa)×(b+wb)p_4=(a+w_a) × (b+w_b)



이것들 중에서 어떤것이 상한인지 하한인지도 계산하기 전에는 알 수 없으며, 구한 상한과 하한의 차이도 제각각인데다가 a값과 b값을 포함하고 있습니다.
나눗셈도 똑같은 방법으로 구간 값의 폭으로 결과의 폭을 구할 수 없다는 것을 증명할 수 있습니다.



읽어주셔서 감사합니다.