辛代数中不等式的求解

2024-10-03 15:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Symphy中解决以下不等式:

(10000 / x) - 1 < 0

于是我发出命令:

solve_poly_inequality( Poly((10000 / x) - 1 ), '<')

然而,我得到:

[Interval.open(-oo, 1/10000)]

然而,我的手动计算给出x<;0或x>;10000.

我错过了什么?由于-1,我不能将其表示为有理函数

提前谢谢


Tags: 命令ltgt手动openoointervalsolve
2条回答

您使用的是低级解决例程。我建议使用更高级别的例程solvesolveset,例如

>>> solveset((10000 / x) - 1 < 0, x, S.Reals)
(−∞, 0) ∪ (10000, ∞)

您的尝试是正确的,但看起来是错误的,原因是您没有指定生成器使用so Poly使用1/x作为其变量(我们称之为g),因此它解决了问题1000*g - 1 < 0…当g小于1/1000时,这是正确的

您可以通过书写来查看此发电机标识

>>> Poly(1000/x - 1)
Poly(1000*1/x - 1, 1/x, domain='ZZ')

10000/x-1不是x中的多项式,而是1/x中的多项式。相反,10000/x-1x中的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))

相关问题 更多 >