Я пытаюсь создать объект, который является постоянным со значением в единичном интервале. SymPy имеет группу встроенных предположений со многими полезными свойствами: нечетное / четное, положительное, простое, сложное и т. Д. Но мне кажется, что я должен сам построить это с помощью предположения ():
import sympy as sp
p = sp.symbols('p', real=True, constant=True)
x = sp.symbols('x', real=True)
with sp.assuming(sp.Q.is_true(0 < p), sp.Q.is_true(p < 1)):
display(sp.Integral(x**(-p), (x, 1, sp.oo)))
display(sp.Integral(x**(-p), (x, 1, sp.oo)).doit())
display(sp.Integral(sp.cos(x), (x, 0, sp.oo)).doit())
Но когда я оцениваю интеграл, приведенный выше, он дает два результата: один для p> 1 (что выходит за рамки моего предположения) и неоцененный интеграл для p <1. </p>
Хмм ... Хорошо, теперь я вижу, что предположить () является частью пакета Новые предположения и что эти два пакета плохо интегрированы. Есть ли способ написать собственное предположение для чего-то вроде inside_unit_interval, more_than_n, less_than_n?