(I have used k = symbols('k',real=True,positive=True)).
for elem in L:
print(elem.subs(k,Rational(9,4)))
outputs five True. But solving this way :
res = solve([k>2, k <= 3, L[0], L[1], L[2], L[3], L[4]], k)
leads to the following error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/sympy/solvers/solvers.py", line 691, in solve
return reduce_inequalities(f, symbols=symbols)
File "/usr/lib/python2.7/site-packages/sympy/solvers/inequalities.py", line 513, in reduce_inequalities
poly_reduced.append(reduce_rational_inequalities([exprs], gen))
File "/usr/lib/python2.7/site-packages/sympy/solvers/inequalities.py", line 255, in reduce_rational_inequalities
result = solution.as_relational(gen)
File "/usr/lib/python2.7/site-packages/sympy/sets/sets.py", line 1212, in as_relational
return Or(*[set.as_relational(symbol) for set in self.args])
AttributeError: 'Complement' object has no attribute 'as_relational'
From these messages, at first glance, I guessed for something wrong with my relationals L but
each element of L seems to have a good type:
>>> type(L[1])
<class 'sympy.core.relational.StrictGreaterThan'>
the same than what returns: type(k>2). So I am wondering if I have made
some mistake or if this is due to some limitations as my relations are quite complicated :
>>> L[1]
4*(-k**6 + 2*k**4 + 4*k**2 + 12)/(k*(-k**8 + 2*k**6 + 4*k**4 + 16*k**2 - 8)) > (k**8 - 4*k**6 + 16)/(k*(k**8 - 2*k**6 - 4*k**4 - 16*k**2 + 8))
Thanks for any help or advice
Bruno
Could you give this a try in my (smichr) improve_relational branch? I saw that error there, too, and a correction I made avoided the error.
>>> res = solve([k>2, k <= 3, R[0], R[1], R[2], R[3]],k)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/sympy/solvers/solvers.py", line 674, in solve
symbols=symbols)
File "/usr/lib/python2.7/site-packages/sympy/solvers/inequalities.py", line 434, in reduce_inequalities
poly_reduced.append(reduce_rational_inequalities([exprs], gen, assume))
File "/usr/lib/python2.7/site-packages/sympy/solvers/inequalities.py", line 209, in reduce_rational_inequalities
solution = solve_rational_inequalities(eqs)
File "/usr/lib/python2.7/site-packages/sympy/solvers/inequalities.py", line 144, in solve_rational_inequalities
global_interval -= denom_interval
File "/usr/lib/python2.7/site-packages/sympy/core/sets.py", line 250, in __sub__
return self.intersect(other.complement)
File "/usr/lib/python2.7/site-packages/sympy/core/sets.py", line 133, in complement
return self._complement
File "/usr/lib/python2.7/site-packages/sympy/core/sets.py", line 1229, in _complement
% self)
ValueError: {RootOf(k**8 - 2*k**6 - 4*k**4 - 16*k**2 + 8, 0)}: Complement not defined for symbolic inputs
So the error message is slightly different... Thanks for any hint.
Bruno
Could you do `print filldedent(R);print filldedent(L)` so I can see what the expressions are that you are trying to solve?
(k is introduced with k = symbols('k',real=True,positive=True)).
>>> res= solve([k>2, k <= 3, R[0]],k)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/sympy/solvers/solvers.py", line 674, in solve
symbols=symbols)
File "/usr/lib/python2.7/site-packages/sympy/solvers/inequalities.py", line 434, in reduce_inequalities
poly_reduced.append(reduce_rational_inequalities([exprs], gen, assume))
File "/usr/lib/python2.7/site-packages/sympy/solvers/inequalities.py", line 209, in reduce_rational_inequalities
solution = solve_rational_inequalities(eqs)
File "/usr/lib/python2.7/site-packages/sympy/solvers/inequalities.py", line 144, in solve_rational_inequalities
global_interval -= denom_interval
File "/usr/lib/python2.7/site-packages/sympy/core/sets.py", line 250, in __sub__
return self.intersect(other.complement)
File "/usr/lib/python2.7/site-packages/sympy/core/sets.py", line 133, in complement
return self._complement
File "/usr/lib/python2.7/site-packages/sympy/core/sets.py", line 1229, in _complement
% self)
ValueError: {RootOf(k**8 - 2*k**6 - 4*k**4 - 16*k**2 + 8, 0)}: Complement not defined for symbolic inputs
Bruno