Inequality Solvers¶
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.
Note
For a beginner-friendly guide focused on solving inequalities, refer to Reduce One or a System of Inequalities for a Single Variable Algebraically.
Note
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)[source]¶
Solve a system of rational inequalities with rational coefficients.
Examples
>>> 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))
See also
- sympy.solvers.inequalities.solve_poly_inequality(poly, rel)[source]¶
Solve a polynomial inequality with rational coefficients.
Examples
>>> 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}]
See also
- sympy.solvers.inequalities.solve_poly_inequalities(polys)[source]¶
Solve polynomial inequalities with rational coefficients.
Examples
>>> 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,
Reduce a system of rational inequalities with rational coefficients.
Examples
>>> 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)
This function find the non-infinite solution set so if the unknown symbol is declared as extended real rather than real then the result may include finiteness conditions:
>>> 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)[source]¶
Reduce an inequality with nested absolute values.
Examples
>>> 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)
See also
- sympy.solvers.inequalities.reduce_abs_inequalities(exprs, gen)[source]¶
Reduce a system of inequalities with nested absolute values.
Examples
>>> 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)
See also
- sympy.solvers.inequalities.reduce_inequalities(inequalities, symbols=[])[source]¶
Reduce a system of inequalities with rational coefficients.
Examples
>>> 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,
Solves a real univariate inequality.
- Parameters:
expr : Relational
The target inequality
gen : Symbol
The variable for which the inequality is solved
relational : bool
A Relational type output is expected or not
domain : Set
The domain over which the equation is solved
continuous: bool
True if expr is known to be continuous over the given domain (and so continuous_domain() does not need to be called on it)
- Raises:
NotImplementedError
The solution of the inequality cannot be determined due to limitation in
sympy.solvers.solveset.solvify().
Notes
Currently, we cannot solve all the inequalities due to limitations in
sympy.solvers.solveset.solvify(). Also, the solution returned for trigonometric inequalities are restricted in its periodic interval.Examples
>>> 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)
See also
sympy.solvers.solveset.solvifysolver returning solveset solutions with solve’s output API