我想用 a 和 b 实数将复数
z
写成标准形式 z = a + i b
。
对于我的大多数情况,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'
对于 c2,我希望转换能够给我
cos(log(5)) + i * sin(log(5))
。有没有办法得到这个结果?
c2 = sp.exp(sp.I * sp.log(5))
2_standard = sp.cos(sp.log(5)) + sp.I * sp.sin(sp.log(5))
你必须明确告诉 sympy 要评估什么。
expand(complex=true)
不会自动将非指数形式识别为复指数