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

2024-04-26 20:34:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用SymPy order库尝试一些东西,并发现以下等式:

O(2**n, (n, oo))

输出将是O(exp(n*log(2)))。你知道吗

有没有办法让SymPy输出O(2**n)而不是O(exp(n*log(2)))?你知道吗


Tags: logorderoosympy办法等式
1条回答
网友
1楼 · 发布于 2024-04-26 20:34:33

你可以用它来伪装

>>> 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关键字,可能值得提出一个问题

相关问题 更多 >