“多项式错误:只有一元多项式是允许的”当解决一个不等式组

2024-09-26 18:04:10 发布

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

我想找出以下两个常数的间隔cons1cons2 我写了下面的代码

 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

Tags: 代码fromimport间隔常数absrationalabc
1条回答
网友
1楼 · 发布于 2024-09-26 18:04:10

这是故意的。2*((x+2)**2) - Abs(x) - 1不是x中的多项式。exp(2*x+1) - 2.5也不是。solve_rational_inequalities的方法不适用于此类函数。你知道吗

如果你试图用Poly包装这些表达式来欺骗数学,那么所发生的一切就是SymPy将使它们成为关于xAbs(x)(或exp(2*x+1)等)的多项式。这是一种多项式,但不是关于x的多项式,这是solve_rational_inequalities所需要的。因此出现了错误。你知道吗

一句话:SymPy目前没有一个算法来解决一般不等式系统。对于有理不等式inequality solvers页上列出的一些其他内容,有一个算法,包括solve_univariate_inequality(它允许一般函数,但只允许一个变量)。你知道吗

相关问题 更多 >

    热门问题