2017-04-11 62 views
1

如何從(不平等/關係)對象中獲取結果並將其設置爲(set/interval)對象?python sympy(不等或OR關係)到(設置或間隔)

import sympy 
import sympy.solvers 
#import sympy.solvers.inequalities 
from sympy.solvers.inequalities import reduce_rational_inequalities 

x = sympy.Symbol('x') 

ExampleInequalities1 = [[x**2 <= 1]] 
ResultDomain1 = reduce_rational_inequalities(ExampleInequalities1, x) 
print 'ResultDomain1', ResultDomain1 

給我:

>>> And(-1 <= x, x <= 1) 

上述結果可以表示爲:

>>> sympy.Interval(-1, 1) 

這是一個Sympy設置間隔對象。 (這可以讓我使用交叉,統一,補充等)。

如何執行此轉換?

回答

3

使用as_set方法:

>>> And(-1 <= x, x <= 1).as_set() 
[-1, 1] 

您可以as_relational

>>> Interval(-1, 1).as_relational(x) 
(-1 <= x) & (x <= 1) 
+0

偉大工程所有情況下回去除非我得到一個「假」域我的不平等的結果。我會做一個特例來將它轉換成EmptySet。感謝您及時的回覆! –

+0

只要不等式產生一個SymPy對象,就會得到'S.false',SymPy false類型,並且'S.false.as_set()'按照預期給出'EmptySet()'。 – asmeurer