Рассмотрим следующий пример:Может ли sympy определить, является ли выражение положительным?
import sympy
x = sympy.Symbol(x, real=True)
expr = sympy.sin(x) + 1
может SymPy как-то определить, что expr >= 0
всегда верно?
Рассмотрим следующий пример:Может ли sympy определить, является ли выражение положительным?
import sympy
x = sympy.Symbol(x, real=True)
expr = sympy.sin(x) + 1
может SymPy как-то определить, что expr >= 0
всегда верно?
Вы могли бы попытаться решить неравенство для x
:
>>> from sympy.solvers.inequalities import solve_univariate_inequality
>>> solve_univariate_inequality(expr >= 0, x)
And(-oo < x, x < oo)
Так вот SymPy говорит вам, что неравенство справедливо для любого действительного числа.
Вы также можете использовать систему допущений, чтобы узнать об атрибутах выражения. Был недавний вопрос об этом here, в котором Наир дает хорошие ссылки. Но для вашего случая просто попробуйте
>>> from sympy import *
>>> var('x', real=True)
x
>>> (sin(x)+1).is_positive
>>> (sin(x)+1).is_nonnegative
Результат будет либо True, False, либо (в данном случае) Нет. None
означает, что результат неизвестен или что определение не было выполнено. В этом случае результат для неотрицательных должен быть True. Улучшение системы допущений - это активная работа с SymPy.
См. Следующую проблему в github: https://github.com/sympy/sympy/issues/8533 – Bach