В соответствии с ниже вопрос взял из самоподготовки exercise:Умножение двух интервалов
Попутно, Бен также загадочно комментирует, «Проверяя признаки концов интервалов, можно разбить mul_interval в девять случаев, только один из которых требует более двух умножений ». Написать функцию быстрого умножения, используя предложение Бену:
def mul_interval_fast(x, y):
"""Return the interval that contains the product of any value in x and any
value in y, using as few multiplications as possible.
>>> str_interval(mul_interval_fast(interval(-1, 2), interval(4, 8)))
'-8 to 16'
>>> str_interval(mul_interval_fast(interval(-2, -1), interval(4, 8)))
'-16 to -4'
>>> str_interval(mul_interval_fast(interval(-1, 3), interval(-4, 8)))
'-12 to 24'
>>> str_interval(mul_interval_fast(interval(-1, 2), interval(-8, 4)))
'-16 to 8'
"""
"*** YOUR CODE HERE ***"
Я мог бы проанализировать, что ниже картина результатов:
(1, 3)(5, 7) ---> [min(5, 7, 15, 21), max(5, 7, 15, 21)] ---> (5, 21)
(-1, -3)(-5, -7) ---> [min(5, 7, 15, 21), max(5, 7, 15, 21)] ---> (5, 21)
+++++++++++++++++++++++++++++++
(1, 3)(5, -7) ---> [min(5, -7, 15, -21), max(5, -7, 15, -21)] ---> (-21, 15)
(-1, 3)(5, -7) ---> [min(-5, 7, 15, -21), max(-5, 7, 15, -21)] ---> (-21, 15)
(1, -3)(-5, 7) ---> [min(-5, 7, 15, -21), max(-5, 7, 15, -21)] ---> (-21, 15)
(-1, -3)(-5, 7) ---> [min(5, -7, 15, -21), max(5, -7, 15, -21)] ---> (-21, 15)
+++++++++++++++++++++++++++++++++++
(1, 3)(-5, 7) ---> [min(-5, 7, -15, 21), max(-5, 7, -15, 21)] ---> (-15, 21)
(-1, 3)(-5, 7) ---> [min(5, -7, -15, 21), max(5, -7, -15, 21)] ---> (-15, 21)
(1, -3)(5, -7) ---> [min(5, -7, -15, 21), max(5, -7, -15, 21)] ---> (-15, 21)
(-1, -3)(5, -7) ---> [min(-5, 7, -15, 21), max(-5, 7, -15, 21)] ---> (-15, 21)
++++++++++++++++++++++++++++++++
(1, 3)(-5, -7) ---> [min(-5, -7, -15, -21), max(-5, -7, -15, -21)] ---> (-21, -5)
(-1, -3)(5, 7) ---> [min(-5, -7, -15, -21), max(-5, -7, -15, -21)] ---> (-21, -5)
++++++++++++++++++++++++++++++
(-1, 3)(5, 7) ---> [min(-5, -7, 15, 21), max(-5, -7, 15, 21)] ---> (-7, 21)
(1, -3)(-5, -7) ---> [min(-5, -7, 15, 21), max(-5, -7, 15, 21)] ---> (-7, 21)
+++++++++++++++++++++++++++++++
(-1, 3)(-5, -7) ---> [min(5, 7, -15, -21), max(5, 7, -15, -21)] ---> (-21, 7)
(1, -3)(5, 7) ---> [min(5, 7, -15, -21), max(5, 7, -15, -21)] ---> (-21, 7)
Но выше картина не показывает тех nine cases
.
Таким образом, в конкретных, я хотел бы понять этот момент: By testing the signs of the endpoints of the intervals, it is possible to break mul_interval into nine cases,
Пожалуйста, помогите мне в этом интервальной арифметике !!!
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что Stack Overflow не является домашней службой. –