2017-04-11 6 views
1

Wie nehme ich das Ergebnis von einem (Ungleichheit/relationalen) Objekt und mache es zu einem (set/interval) Objekt?Python sympy (Ungleichheit OR relational) zu (set ODER interval)

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 

mir gibt:

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

Das obige Ergebnis wie folgt dargestellt werden:

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

der ein Sympy Set Interval Objekt ist. (womit ich Schnittpunkt, Einheit, Komplement usw. verwenden kann).

Wie führe ich diese Umwandlung durch?

Antwort

3

Verwenden Sie die as_set Methode:

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

Sie können mit as_relational

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

Funktioniert hervorragend für alle Fälle gehen zurück, außer wenn ich ein 'False' Domain als meine Ungleichheit Ergebnis. Ich werde einen speziellen Fall machen, um das in den EmptySet zu verwandeln. Danke für die schnelle Antwort! –

+0

Solange die Ungleichung ein SymPy-Objekt erzeugt, erhalten Sie 'S.false', den falschen Typ SymPy, und' S.false.as_set() 'gibt' EmptySet() 'wie erwartet. – asmeurer