" PolynomialError:只允许单变量多项式"在解决不平等制度时

时间:2018-03-11 20:19:38

标签: python sympy

我想找到以下两个常量__MigrationHistorycons1的间隔 我写了以下代码

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)), '<=')]])

1 个答案:

答案 0 :(得分:1)

这是设计的。 2*((x+2)**2) - Abs(x) - 1不是x中的多项式。 exp(2*x+1) - 2.5也不是。solve_rational_inequalitiesx的方法不适用于此类功能。

如果你试图通过将这些表达式包装在Poly中来欺骗数学,那么所有发生的事情就是SymPy将使它们成为Abs(x) exp(2*x+1)的多项式(或{ {1}}等)。这是一种多项式,但不是关于x的多项式,这是solve_rational_inequalities所要求的。因此错误。

结论:SymPy目前没有解决一般不等式系统的算法。 理性不等式的算法以及inequality solvers页面上列出的其他一些内容,包括solve_univariate_inequality(允许一般函数,但仅限一个变量)。