问题描述
我正在编写一个程序,为我的物理实验室计算精确的微分。
我知道我可以设置实域或正数( from sympy import *
):
x, y, z = symbol('xy z', positive = True)
我的问题是指定域,例如n>1
。
可能吗?
在我的输出中,我得到了|n^2-1|
这样的表达式|n^2-1|
并将此域设置为n>1
我将接受类似n^2-1
输出(没有绝对值“ ||”)
1楼
对于符号的假设,可以使用正数或负数 :
p = Symbol('p', positive=True)
但这只能定义p> 0 (如果使用negative = True,则可以定义p <0 )。
对于更复杂的表达式优化,请尝试fine(expression,假定) :
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,并通过它来提炼 。
当前正在将该假设样式移植到其他算法的工作正在进行中,但是支持仍然不完整( 简化似乎无法识别这种假设)。
预计在将来的SymPy版本中将扩展对Q.statement(...)的支持,因为目前对此正在进行大量工作。