我想找到以下两个常量__MigrationHistory
和cons1
的间隔
我写了以下代码
cons2
但是因为Abs我得到了:
from sympy import Poly
from sympy import Abs
from sympy.solvers.inequalities import solve_rational_inequalities
from sympy.abc import x
cons1=2*((x+2)**2)-Abs(x)-1
cons2=exp(2*x+1)-2.5
solve_rational_inequalities([[((Poly(cons1), Poly(1, x)), '<='), (Poly(cons2), Poly(1, x)), '<=')]])
答案 0 :(得分:1)
这是设计的。 2*((x+2)**2) - Abs(x) - 1
不是x中的多项式。 exp(2*x+1) - 2.5
也不是。solve_rational_inequalities
。 x
的方法不适用于此类功能。
如果你试图通过将这些表达式包装在Poly中来欺骗数学,那么所有发生的事情就是SymPy将使它们成为Abs(x)
和 exp(2*x+1)
的多项式(或{ {1}}等)。这是一种多项式,但不是关于x的多项式,这是solve_rational_inequalities
所要求的。因此错误。
结论:SymPy目前没有解决一般不等式系统的算法。 理性不等式的算法以及inequality solvers页面上列出的其他一些内容,包括solve_univariate_inequality
(允许一般函数,但仅限一个变量)。