Для большинства моих случаях конструкция Sympy z.expand(complex=True) делает то, что я ожидаю, но не во всех случаях. Например, мне не удалось переписать z = 5**sp.I, и SymPy просто возвращает введенные данные:
Код: Выделить всё
In [1]: import sympy as sp
In [2]: c1 = 2 * sp.sqrt(2) * sp.exp(-3 * sp.pi * sp.I / 4)
In [3]: c1.expand(complex=True) # works as expected
Out[3]: -2 - 2*I
In [4]: c2 = 5**(sp.I) # SymPy fails here
In [5]: c2.expand(complex=True)
Out[5]: re(5**I) + I*im(5**I)
In [6]: sp.__version__
Out[6]: '1.13.2'
Подробнее здесь: https://stackoverflow.com/questions/791 ... -z-coslog5