2

math.exp()不适用于复数:

>>> math.exp (math.pi*1j)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float

**正如预期的那样,这并没有对我造成太大伤害:

>>> math.e ** (math.pi*1j)
(-1+1.2246467991473532e-16j)

现在问题出在对数上。math.log不适用于负数:

>>> math.log(-1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error

(预期结果(0+3.141592653589793j):)

如何在python中计算结果复杂的对数? (最好不要自己实现)

4

1 回答 1

5

数学文档明确表示它不支持复数。如果你想要一个 python 中的库,你应该使用cmath来代替。

Cmath 代表复杂数学。

cmath 具有与数学大部分相同的接口,因此对于您的示例,您可以执行以下操作:

import cmath

cmath.log(-1)
于 2013-08-17T02:51:45.760 回答