我想在同情中解决以下不平等
(10000 / x) - 1 < 0
所以我发出命令
solve_poly_inequality( Poly((10000 / x) - 1 ), '<')
结果我得到了
[Interval.open(-oo, 1/10000)]
然而,我的手动计算给出x&lt; 0或x> 10000
我错过了什么?由于-1,我不能将它表示为理性函数,因为-1。
提前致谢!
答案 0 :(得分:6)
您正在使用低级别的解决程序。我建议使用更高级别的例程solve
或solveset
,例如
>>> solveset((10000 / x) - 1 < 0, x, S.Reals)
(−∞, 0) ∪ (10000, ∞)
您的尝试是正确但看起来不对的原因是您没有指定要使用的生成器,因此Poly使用1/x
作为其变量(让我们称之为g
)所以它解决了问题1000*g - 1 < 0
...当g小于你发现的1/1000时,这是真的。
您可以通过编写
来查看此生成器标识>>> Poly(1000/x - 1)
Poly(1000*1/x - 1, 1/x, domain='ZZ')
答案 1 :(得分:2)
10000/x-1
不是x
中的多项式,而是1/x
中的多项式。相反,10000/x-1
是x
中的rational function。虽然您可能会尝试放置Poly(1000*1/x - 1, x, domain='ZZ')
,但会出现错误
PolynomialError: 1/x contains an element of the generators set
因为根据定义10000/x-1
不能是x
中的多项式。因此,你不能用这个做计算。
您也可以尝试跟踪或解决其他问题。
from sympy.solvers.inequalities import reduce_rational_inequalities
from sympy import Poly
from sympy.abc import x
reduce_rational_inequalities([[10000/x - 1 < 0]], x)
((-oo < x) & (x < 0)) | ((10000 < x) & (x < oo))