假设SymPy的符号在零和一之间?

dav*_*ugh 4 sympy python-3.6

我正在使用 SymPy 在 Python 中对非常大的表达式进行符号操作。我正在处理的大多数符号表示小于或等于 1 的非负实数。

我如何告诉 SymPy 这些假设?我发现我可以在创建符号时执行以下操作。

import sympy as sym

x = sym.symbols('x', real=True, nonnegative=True)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何强加一个的上限。

小智 7

不幸的是,当前实施的假设系统没有提供施加这种界限的方法。出于某些目的,引入隐含边界的代数结构可能是合理的:例如,

t = sym.symbols('t', nonnegative=True)
x = t/(1+t)
Run Code Online (Sandbox Code Playgroud)

现在 SymPy 知道 x 在 0 和 1 之间:

>>> x < 1
True
>>> x >= 0
True
Run Code Online (Sandbox Code Playgroud)

这是否有帮助取决于这种替换您正在使用的表达式的自然程度。另一种选择是x = sym.exp(-t)