Я новичок в SymPy и solveset
. Я ищу особенность выражения и для этого я решаю знаменатель. После этого я хочу использовать результаты для дальнейших вычислений, чтобы сгенерировать код, который имеет дело со случаями сингулярности.
Возвращение дайверов «решает» между различными уравнениями. В моем случае до сих пор:
sets.FiniteSet
sets.Union
В то время как FiniteSet
может использоваться непосредственно с циклами for,Union
не может.
Например:
sol = Union(ImageSet(Lambda(_n, 2*_n*pi + pi/2), Integers), ImageSet(Lambda(_n, 2*_n*pi + 3*pi/2), Integers))
Если поместить это в цикл (for s in sol:
), цикл никогда не закончится. Так что это бесполезно. sol.is_interval
приводит к False
, в то время как я ожидаю True
.
Обратите внимание на следующий пример, который обнаруживает недопустимый ввод:
def fun(x):
if (x+pi/2)%pi == 0:
print('Detect a not allowed input.')
где условие if
должен быть получен из решения sol
сверху.
- Как определить, имеет ли
Union
конечное или бесконечное число элементов? - И как получить одно выражениечто можно использовать за пределами этого мира сетов?
Эта таблица объясняет, что я хочу сделать:
Темно-синяя часть с левой стороны является генератором кода светло-голубой части с правой стороны, который может быть другим языком программирования, который не способен обрабатывать такие вещи, как бесконечность или деление на ноль. Синюю часть, которую я собираюсь реализовать.
В настоящее время я остановился на блоке «Генерация обработки Singularity», потому что Set
и особенно Union
хороши для печати, но сложны, если не бесполезны. для дальнейшей обработки.
Я пытался задействовать solveset
из-за утверждения в документации SymPy , что "рано или поздно, решающий набор данных переходит к решению, внутреннему или внешнему". Что касается моего заявления, я надеюсь, этого не произойдет. Может быть, я не совсем понял механизм sets
.
Примечания:
- Я также не нашел способа извлечь только одну
ImageSet
задержку в этом Union
. Мне кажется, что я могу упаковать его, но распаковка не предусмотрена. Но с моей точки зрения это важно для вычислений.