SymPy – 查询
SymPy软件包中的assumptions模块包含提取表达式信息的工具。该模块为此目的定义了ask()函数。
sympy.assumptions.ask(property)
以下属性提供了关于表达式的有用信息 −
algebraic(x )
要成为代数,一个数字必须是有理系数的非零多项式方程的根。√2是因为√2是x2-2=0的解,所以它是代数的。
complex(x )
复数谓词。当且仅当x属于复数的集合时,它是真的。
composite(x )
由 ask(Q.composite(x)) 返回的复合数谓词,当且仅当 x 是一个正整数,并且除了 1 和数字本身之外至少有一个正除数时为真。
偶数 、奇数
如果x在偶数集和奇数集中,ask()分别返回真。
虚数
这个属性代表虚数谓词。如果x可以被写成实数乘以虚数单位I,则为真。
整数
这个属性由Q.integer(x)返回,如果x属于偶数集则为真。
有理数、无理数
Q.irrational(x)当且仅当x是任何不能被表达为整数之比的实数时为真。例如,π是一个无理数。
正数、负数
检查数字是否为正数或负数的谓词
零,非零
检验一个数是否为零的谓词。
>>> 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)