我想找出以下两个常数的间隔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
这是故意的。
2*((x+2)**2) - Abs(x) - 1
不是x中的多项式。exp(2*x+1) - 2.5
也不是。solve_rational_inequalities
的方法不适用于此类函数。你知道吗如果你试图用Poly包装这些表达式来欺骗数学,那么所发生的一切就是SymPy将使它们成为关于
x
和Abs(x)
(或exp(2*x+1)
等)的多项式。这是一种多项式,但不是关于x的多项式,这是solve_rational_inequalities
所需要的。因此出现了错误。你知道吗一句话:SymPy目前没有一个算法来解决一般不等式系统。对于有理不等式和inequality solvers页上列出的一些其他内容,有一个算法,包括
solve_univariate_inequality
(它允许一般函数,但只允许一个变量)。你知道吗相关问题 更多 >
编程相关推荐