可以确定表达是否为阳性?

时间:2015-03-17 17:34:41

标签: python sympy

考虑以下示例:

import sympy
x = sympy.Symbol(x, real=True)
expr = sympy.sin(x) + 1

Sympy能否以某种方式确定expr >= 0总是如此?

2 个答案:

答案 0 :(得分:5)

您可以尝试解决x的不等式:

>>> from sympy.solvers.inequalities import solve_univariate_inequality
>>> solve_univariate_inequality(expr >= 0, x)
And(-oo < x, x < oo)

所以这里SymPy告诉你,不等式适用于任何实数。

答案 1 :(得分:4)

您还可以使用假设系统来查询表达式的属性。最近有一个关于here的问题,其中Nair提供了一些很好的参考。但是对于你的情况,只需尝试

>>> from sympy import *
>>> var('x', real=True)
x
>>> (sin(x)+1).is_positive
>>> (sin(x)+1).is_nonnegative

结果将为True,False或(在本例中)为None。 None表示结果未知或确​​定尚未实施。在这种情况下,非负的结果应为True。改进假设系统是SymPy的积极工作。