Python cmath如何在exp的指数中使用复杂变量?

che*_*gpu 0 python math python-3.x

我知道cmathin Python用于复杂的数学运算.

import cmath
cmath.exp(-2j)
Run Code Online (Sandbox Code Playgroud)

现在我想在其指数中使用一个变量:

a = 2
cmath.exp(-a*j)
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

name 'j' is not defined
Run Code Online (Sandbox Code Playgroud)

如何在exp的指数中使用复数变量?

Jim*_*ard 5

在文字中使用时,j被正确识别为创建复杂对象.除此之外,j将被假定为另一个名称,并且将触发其价值的查找.

您仍然需要在文字中定义它:

a = 2j
cmath.exp(-a)
(-0.4161468365471424-0.9092974268256817j)
Run Code Online (Sandbox Code Playgroud)

或者,喂acomplex:

cmath.exp(-complex(0, a))  # or complex(imag=a)
Run Code Online (Sandbox Code Playgroud)


jsb*_*eno 5

只需编写j,1j以便解析器知道它是一个数字,而不是一个名为j的变量,

a = 2
cmath.exp(-a*1j)
Run Code Online (Sandbox Code Playgroud)

另一种方法是让你的变量本身包含一个复数 - 像in a = 2j,另一个是使用内置complex类名来使用"a"作为你想象的部分明确地构造一个复数:

a = 2
cmath.exp(complex(0, -a))
Run Code Online (Sandbox Code Playgroud)

对于不希望在代码中找到复杂数字的人来说,最后一种形式可能更具可读性.