如何使sympy打印O(2 ** n)而不是O(exp(n * log(2)))

时间:2019-05-06 02:55:22

标签: python big-o sympy

我正在使用am start库进行尝试并发现以下等式:

am force-stop

输出将为SymPy order

有什么方法可以使SymPy输出O(2**n, (n, oo)) 而不是O(exp(n*log(2)))

1 个答案:

答案 0 :(得分: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想要显示的方式。是否应该为evaluate关键字添加/遵循O可能值得提出一个问题。