我正在使用SymPy order
库尝试某些操作并发现以下等式:
O(2**n, (n, oo))
输出将是
O(exp(n*log(2)))
。有什么方法可以使SymPy输出
O(2**n)
而不是O(exp(n*log(2)))
? 最佳答案
你可以用
>>> o = O(2**n, (n, oo))
>>> Function("O")(*map(simplify,o.args))
O(2**n, (n, oo))
但是,如果您希望能够以这种方式进行打印,则看起来必须创建自定义打印机才能以这种方式进行打印。如果执行
o.func(*map(...))
-即使使用evaluate=False
-它也会恢复为exp
形式,因此这似乎已硬编码为O
想要显示的方式。可能值得提出一个问题,即是否应在O中添加/遵守evaluate
关键字。