Решение упражнения 2.8 из SICP

18 January, 2008 (22:11) | Решения упражнений

Давайте сначала уточним, почему при сложении двух интервалов мы суммируем соответствующие границы. Дело в том, что минимум суммы достигается на минимумах слагаемых, а максимум суммы достигается на максимумах слагаемых. Все просто.

Чтобы определить нижнюю и верхнюю границы при вычитании интервалов, нужно разобраться, когда достигаются минимум и максимум разности. Очевидно, что для большего значения разности нужно максимизировать уменьшаемое и минимизировать вычитаемое, то есть для получения верхней границы разности интервалов нужно вычесть из верхней границы интервала-уменьшаемого нижнюю границу интервала-вычитаемого. Аналогично для меньшего значения разности нужно минимизировать уменьшаемое и максимизировать вычитаемое, то есть для получения нижней границы разности интервалов нужно вычесть из нижней границы интервала-уменьшаемого верхнюю границу интервала-вычитаемого.

Разобравшись в этой нехитрой математике, записываем процедуру вычисления разности интервалов:

(define (sub-interval x y) 
  (make-interval (- (lower-bound x) (upper-bound y)) 
                 (- (upper-bound x) (lower-bound y))))

Write a comment