我正在编写一个程序来计算物理实验室的精确差分。我知道我可以设置真正的域名或正面(from sympy import *
):
x, y, z = symbol('x y z', positive = True)
我的问题是指定域名n>1
。可能吗?
在我的输出中,我得到了|n^2-1|
这样的表达式,并设置了此域n>1
我会接受n^2-1
之类的输出(没有绝对值“||”)
答案 0 :(得分:3)
对于符号的假设,您可以使用正面或否定:
p = Symbol('p', positive=True)
但是这只能定义 p> 0 (如果使用 negative = True ,则 p< 0 )。
要进行更复杂的表达式细化,请尝试 refine(表达式,假设):
In [1]: n = Symbol('n')
In [2]: refine(Abs(n-1), Q.positive(n-1))
Out[2]: n - 1
In [3]: refine(Abs(n-1))
Out[3]: │n - 1│
即,您创建 Q.positive(n-1)的假设,即 n> 1 ,并将其传递给精简。
目前正在进行将此假设样式移植到其他算法的工作,但支持仍然不完整(简化似乎无法识别这种假设)。
预计 Q.statement(...)的支持将在未来的SymPy版本中得到扩展,因为目前正在进行大量的工作。