我正在使用 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
关键字的问题。
关于python - 如何使 sympy 打印 O(2**n) 而不是 O(exp(n*log(2))),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55998251/