不等式解算器#

For general cases reduce_inequalities() should be used. Other functions are the subcategories useful for special dedicated operations, and will be called internally as needed by reduce_inequalities.

备注

For a beginner-friendly guide focused on solving inequalities, refer to Reduce One or a System of Inequalities for a Single Variable Algebraically.

备注

Some of the examples below use poly(), which simply transforms an expression into a polynomial; it does not change the mathematical meaning of the expression.

sympy.solvers.inequalities.solve_rational_inequalities(eqs)[源代码]#

求解有理系数有理不等式组。

实例

>>> from sympy.abc import x
>>> from sympy import solve_rational_inequalities, Poly
>>> solve_rational_inequalities([[
... ((Poly(-x + 1), Poly(1, x)), '>='),
... ((Poly(-x + 1), Poly(1, x)), '<=')]])
{1}
>>> solve_rational_inequalities([[
... ((Poly(x), Poly(1, x)), '!='),
... ((Poly(-x + 1), Poly(1, x)), '>=')]])
Union(Interval.open(-oo, 0), Interval.Lopen(0, 1))
sympy.solvers.inequalities.solve_poly_inequality(poly, rel)[源代码]#

求解一个有理系数多项式不等式。

实例

>>> from sympy import solve_poly_inequality, Poly
>>> from sympy.abc import x
>>> solve_poly_inequality(Poly(x, x, domain='ZZ'), '==')
[{0}]
>>> solve_poly_inequality(Poly(x**2 - 1, x, domain='ZZ'), '!=')
[Interval.open(-oo, -1), Interval.open(-1, 1), Interval.open(1, oo)]
>>> solve_poly_inequality(Poly(x**2 - 1, x, domain='ZZ'), '==')
[{-1}, {1}]
sympy.solvers.inequalities.solve_poly_inequalities(polys)[源代码]#

求解有理系数多项式不等式。

实例

>>> from sympy import Poly
>>> from sympy.solvers.inequalities import solve_poly_inequalities
>>> from sympy.abc import x
>>> solve_poly_inequalities(((
... Poly(x**2 - 3), ">"), (
... Poly(-x**2 + 1), ">")))
Union(Interval.open(-oo, -sqrt(3)), Interval.open(-1, 1), Interval.open(sqrt(3), oo))
sympy.solvers.inequalities.reduce_rational_inequalities(exprs, gen, relational=True)[源代码]#

减少有理系数的有理不等式组。

实例

>>> from sympy import Symbol
>>> from sympy.solvers.inequalities import reduce_rational_inequalities
>>> x = Symbol('x', real=True)
>>> reduce_rational_inequalities([[x**2 <= 0]], x)
Eq(x, 0)
>>> reduce_rational_inequalities([[x + 2 > 0]], x)
-2 < x
>>> reduce_rational_inequalities([[(x + 2, ">")]], x)
-2 < x
>>> reduce_rational_inequalities([[x + 2]], x)
Eq(x, -2)

此函数用于查找非无限解集,因此,如果未知符号被声明为扩展实数而不是实数,则结果可能包含有限条件:

>>> y = Symbol('y', extended_real=True)
>>> reduce_rational_inequalities([[y + 2 > 0]], y)
(-2 < y) & (y < oo)
sympy.solvers.inequalities.reduce_abs_inequality(expr, rel, gen)[源代码]#

用嵌套的绝对值减少一个不等式。

实例

>>> from sympy import reduce_abs_inequality, Abs, Symbol
>>> x = Symbol('x', real=True)
>>> reduce_abs_inequality(Abs(x - 5) - 3, '<', x)
(2 < x) & (x < 8)
>>> reduce_abs_inequality(Abs(x + 2)*3 - 13, '<', x)
(-19/3 < x) & (x < 7/3)
sympy.solvers.inequalities.reduce_abs_inequalities(exprs, gen)[源代码]#

用嵌套的绝对值减少一组不等式。

实例

>>> from sympy import reduce_abs_inequalities, Abs, Symbol
>>> x = Symbol('x', extended_real=True)
>>> reduce_abs_inequalities([(Abs(3*x - 5) - 7, '<'),
... (Abs(x + 25) - 13, '>')], x)
(-2/3 < x) & (x < 4) & (((-oo < x) & (x < -38)) | ((-12 < x) & (x < oo)))
>>> reduce_abs_inequalities([(Abs(x - 4) + Abs(3*x - 5) - 7, '<')], x)
(1/2 < x) & (x < 4)
sympy.solvers.inequalities.reduce_inequalities(inequalities, symbols=[])[源代码]#

用有理系数化简一组不等式。

实例

>>> from sympy.abc import x, y
>>> from sympy import reduce_inequalities
>>> reduce_inequalities(0 <= x + 3, [])
(-3 <= x) & (x < oo)
>>> reduce_inequalities(0 <= x + y*2 - 1, [x])
(x < oo) & (x >= 1 - 2*y)
sympy.solvers.inequalities.solve_univariate_inequality(expr, gen, relational=True, domain=Reals, continuous=False)[源代码]#

解一个实的一元不等式。

参数:

expr :关系型

目标不平等

gen :符号

为其解不等式的变量

关系型 布尔

是否需要关系类型输出

:设置

方程求解的区域

连续:布尔

True if expr is known to be continuous over the given domain (and so continuous_domain() does not need to be called on it)

加薪:

NotImplementedError

由于有限元方法的局限性,该不等式的解无法确定 sympy.solvers.solveset.solvify() .

笔记

目前,我们不能解决所有的不平等,由于限制 sympy.solvers.solveset.solvify() . 另外,三角不等式的解在其周期区间内受到限制。

实例

>>> from sympy import solve_univariate_inequality, Symbol, sin, Interval, S
>>> x = Symbol('x')
>>> solve_univariate_inequality(x**2 >= 4, x)
((2 <= x) & (x < oo)) | ((-oo < x) & (x <= -2))
>>> solve_univariate_inequality(x**2 >= 4, x, relational=False)
Union(Interval(-oo, -2), Interval(2, oo))
>>> domain = Interval(0, S.Infinity)
>>> solve_univariate_inequality(x**2 >= 4, x, False, domain)
Interval(2, oo)
>>> solve_univariate_inequality(sin(x) > 0, x, relational=False)
Interval.open(0, pi)

参见

sympy.solvers.solveset.solvify

使用solve的输出API返回解算器集解决方案的解算器