SymPy: consultas
El módulo de supuestos del paquete SymPy contiene herramientas para extraer información sobre expresiones. El módulo define la función ask () para este propósito.
sympy.assumptions.ask(property)
Las siguientes propiedades proporcionan información útil sobre una expresión:
algebraic(x)
Para ser algebraico, un número debe ser la raíz de una ecuación polinomial distinta de cero con coeficientes racionales. √2 porque √2 es una solución de x2 - 2 = 0, entonces es algebraico.
complex(x)
Predicado de número complejo. Es cierto si y solo si x pertenece al conjunto de números complejos.
composite(x)
El predicado de número compuesto devuelto por ask (Q.composite (x)) es verdadero si y solo si x es un número entero positivo y tiene al menos un divisor positivo que no sea 1 y el número en sí.
even, odd
Ask () devuelve verdadero de x está en el conjunto de números pares y el conjunto de números impares respectivamente.
imaginary
Esta propiedad representa el predicado numérico imaginario. Es cierto si x se puede escribir como un número real multiplicado por la unidad imaginaria I.
integer
Esta propiedad devuelta por Q.integer (x) devuelve verdadero de x pertenece al conjunto de números pares.
rational, irrational
Q.irrational (x) es verdadero si y solo si x es un número real que no se puede expresar como una razón de números enteros. Por ejemplo, pi es un número irracional.
positive, negative
Predica para comprobar si el número es positivo o negativo
zero, nonzero
Predica para diablos si un número es cero o no
>>> 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)