Как заставить симпати печатать O (2 ** n) вместо O (exp (n * log (2))) - PullRequest
2 голосов
/ 06 мая 2019

Я использую SymPy order библиотеку, пытающуюся что-то найти, и обнаружим следующее уравнение:

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

вывод будет O(exp(n*log(2))).

Есть ли способ сделать вывод SymPy O(2**n) вместо O(exp(n*log(2)))?

1 Ответ

2 голосов
/ 06 мая 2019

Вы можете подделать его с помощью

>>> 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.

...