如何使用 SymPy 将复数 z = 5^i 重写为标准形式 z=cos(log(5)) + i * sin(log(5)) ?

问题描述 投票:0回答:1

我想用 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))
。有没有办法得到这个结果?

python sympy
1个回答
0
投票
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)
不会自动将非指数形式识别为复指数

© www.soinside.com 2019 - 2024. All rights reserved.