Решение упражнения 2.8 из SICP
Давайте сначала уточним, почему при сложении двух интервалов мы суммируем соответствующие границы. Дело в том, что минимум суммы достигается на минимумах слагаемых, а максимум суммы достигается на максимумах слагаемых. Все просто.
Чтобы определить нижнюю и верхнюю границы при вычитании интервалов, нужно разобраться, когда достигаются минимум и максимум разности. Очевидно, что для большего значения разности нужно максимизировать уменьшаемое и минимизировать вычитаемое, то есть для получения верхней границы разности интервалов нужно вычесть из верхней границы интервала-уменьшаемого нижнюю границу интервала-вычитаемого. Аналогично для меньшего значения разности нужно минимизировать уменьшаемое и максимизировать вычитаемое, то есть для получения нижней границы разности интервалов нужно вычесть из нижней границы интервала-уменьшаемого верхнюю границу интервала-вычитаемого.
Разобравшись в этой нехитрой математике, записываем процедуру вычисления разности интервалов:
(define (sub-interval x y) (make-interval (- (lower-bound x) (upper-bound y)) (- (upper-bound x) (lower-bound y))))
Write a comment