Сравните диапазоны чисел SymPy - PullRequest
2 голосов
/ 14 марта 2020

У меня проблема в SymPy. Я решил неравенство, и мне нужно проверить, является ли решение определенным диапазоном.

Например, если бы я хотел решить неравенство sympy.solve(x**3 > 0) (которое вернуло бы (0 < x) & (x < oo)), и я хотел чтобы вернуть true, если функция решения вернула (0 > x) & (x > -oo), она вернула бы false, так как эти два диапазона не равны.

1 Ответ

2 голосов
/ 14 марта 2020

Одномерные отношения можно преобразовать в наборы, и вы можете проверить наличие пересечений наборов. Если пересечение не эквивалентно ни одному из наборов, то ни одно из них не содержится в другом:

>>> a, b = (0 < x) & (x < oo), (0 > x) & (x > -oo)
>>> sa = a.as_set(); sb = b.as_set()
>>> sa
Interval.open(0, oo)
>>> sa.intersection(sb)
EmptySet

Поскольку пересечения вообще нет, эти наборы должны быть разными.

Вот случай, когда есть перекрытие (сдерживание):

>>> Interval(1, 3).intersection(sa)
Interval(1, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...