SICP 연습문제 2.16 친절한 풀이

문제

흔히 대수적으로 같은 식들이 왜 다른 결과를 내놓는지 설명하라. 이런 흠이 없도록, 구간-산술 연산 꾸러미를 만들 수 있는가? 아니면 이런 일은 불가능한 일인가? (경고: 이 문제는 아주 어렵다.)

문제로 부터 얻은 것

왜 구간 산술 연산에서는 대수적 차원의 동치를 적용하기 힘든지 알게 되었습니다.
자신의 한계를 알게 되었습니다.

문제풀이

연습문제 1.14, 연습문제 1.15에서 보앗듯 하나의 식에 같은 변수가 많이 쓰일수록 오차의 범위가 넓어집니다. 이 규칙은 몇가지 사칙연산에서 볼 수 있습니다.

A+AA+A

AAA-A

A×AA×A

A÷AA÷A




대수적으로 동일한 값을 얻기 위해서는 아래 식들에서 expected 값을 반환해야 합니다. 하지만 Alyssa의 시스템에서는 Alyssa 값을 반환합니다.

A=[2,2]A=[-2,2]

A+A    expected:[4,4]    Alyssa:[4,4]A+A \ \ \ \ expected:[-4,4] \ \ \ \ Alyssa:[-4,4]

AA    expected:0    Alyssa:[4,4]A-A \ \ \ \ expected:0 \ \ \ \ Alyssa:[-4,4]

A×A    expected:[0,4]    Alyssa:[4,4]A×A \ \ \ \ expected:[0,4] \ \ \ \ Alyssa:[4,4]

A÷A    expected:1    Alyssa:[,+]A÷A \ \ \ \ expected:1 \ \ \ \ Alyssa:[-∞,+∞]



위와 같은 기본적인 사칙연산부터 대수적인 오류가 있기 때문에, 대수적으로 같은 식들도 다른 결과를 내놓는 것입니다. 이런 흠이 없도록 구간-산술 연산 꾸러미를 만드는 것은 제 수준에서는 불가능하다는 것을 빠르게 인정했습니다.



읽어주셔서 감사합니다.