SymPy-クエリ
SymPyパッケージの仮定モジュールには、式に関する情報を抽出するためのツールが含まれています。このモジュールは、この目的のためにask()関数を定義します。
sympy.assumptions.ask(property)
次のプロパティは、式に関する有用な情報を提供します-
algebraic(x)
代数的であるためには、数は有理係数を持つ非ゼロ多項式の根でなければなりません。√2はx2− 2 = 0の解であるため、√2は代数的です。
complex(x)
複素数述語。xが複素数のセットに属している場合にのみ当てはまります。
composite(x)
ask(Q.composite(x))によって返される合成数述語は、xが正の整数であり、1と数自体以外に少なくとも1つの正の約数がある場合にのみtrueになります。
even, odd
ask()は、xが偶数のセットと奇数のセットにそれぞれ含まれている場合にtrueを返します。
imaginary
このプロパティは、虚数述語を表します。xを実数に虚数単位Iを掛けたものとして書くことができれば真実です。
integer
Q.integer(x)によって返されるこのプロパティは、偶数のセットに属するxのtrueを返します。
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)