SymPy - запросы
Модуль предположений в пакете SymPy содержит инструменты для извлечения информации о выражениях. Для этого модуль определяет функцию ask ().
sympy.assumptions.ask(property)
Следующие свойства предоставляют полезную информацию о выражении -
algebraic(x)
Чтобы быть алгебраическим, число должно быть корнем ненулевого полиномиального уравнения с рациональными коэффициентами. √2, потому что √2 является решением x2 - 2 = 0, поэтому оно алгебраическое.
complex(x)
Предикат комплексного числа. Это верно тогда и только тогда, когда x принадлежит набору комплексных чисел.
composite(x)
Предикат составного числа, возвращаемый функцией ask (Q.composite (x)), истинен тогда и только тогда, когда x является положительным целым числом и имеет по крайней мере один положительный делитель, отличный от 1 и самого числа.
even, odd
Метод ask () возвращает true, если x находится в наборе четных чисел и наборе нечетных чисел соответственно.
imaginary
Это свойство представляет предикат мнимого числа. Это правда, если x можно записать как действительное число, умноженное на мнимую единицу I.
integer
Это свойство, возвращаемое Q.integer (x), возвращает истину, если x принадлежит набору четных чисел.
rational, irrational
Q.irrational (x) истинно тогда и только тогда, когда x - любое действительное число, которое не может быть выражено как отношение целых чисел. Например, пи - иррациональное число.
positive, negative
Предикаты для проверки положительного или отрицательного числа
zero, nonzero
Предикаты, чтобы проверить, равно ли число нулю
>>> from sympy import *
>>> x=Symbol('x')
>>> x=10
>>> ask(Q.algebraic(pi))
False
>>> ask(Q.complex(5-4*I)), ask( Q.complex(100))
(True, True)
>>> x,y=symbols("x y")
>>> x,y=5,10
>>> ask(Q.composite(x)), ask(Q.composite(y))
(False, True)
>>> ask(Q.even(x)), ask(Q.even(y))
(False, True)
>>> x,y= 2*I, 4+5*I
>>> ask(Q.imaginary(x)), ask(Q.imaginary(y))
(True, False)
>>> x,y=5,10
>>> ask(Q.even(x)), ask(Q.even(y)), ask(Q.odd(x)), ask(Q.odd(y))
(False, True, True, False)
>>> x,y=5,-5
>>> ask(Q.positive(x)), ask(Q.negative(y)), ask(Q.positive(x)), ask(Q.negative(y))
(True, True, True, True)
>>> ask(Q.rational(pi)), ask(Q.irrational(S(2)/3))
(False, False)
>>> ask(Q.zero(oo)), ask(Q.nonzero(I))
(False, False)