我想找到以下两个常量cons1和cons2的间隔,我编写了如下代码
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)), '<=')]])但是因为我得到的抗体:
PolynomialError: only univariate polynomials are allowed发布于 2018-03-11 21:24:50
这是故意的。2*((x+2)**2) - Abs(x) - 1不是x中的多项式,exp(2*x+1) - 2.5也不是。solve_rational_inequalities的方法不适用于这类函数。
如果你试图用多边形包装这些表达式来欺骗数学,那么SymPy就会使它们与x 和 Abs(x) (或exp(2*x+1)等)相关的多项式。这是一种多项式,而不是关于x的多项式,这是solve_rational_inequalities所需要的。因此出现了错误。
底线: SymPy目前还没有求解一般不等式系统的算法。有一个用于rational不等式和不等式求解器页面上列出的其他内容的算法,包括solve_univariate_inequality (它允许通用函数,但只允许一个变量)。
https://stackoverflow.com/questions/49224657
复制相似问题