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 は Complex Math の略です。

cmath には math とほとんど同じインターフェイスがあるため、この例では次のようにすることができます。

import cmath

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