9.3. cmath —複素数の数学関数—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/cmath
移動先:案内検索

9.3。 cmath —複素数の数学関数

このモジュールはいつでも利用できます。 複素数の数学関数へのアクセスを提供します。 このモジュールの関数は、整数、浮動小数点数、または複素数を引数として受け入れます。 また、__complex__()または__float__()メソッドのいずれかを持つPythonオブジェクトも受け入れます。これらのメソッドは、オブジェクトをそれぞれ複素数または浮動小数点数に変換するために使用され、関数は次のとおりです。次に、変換の結果に適用されます。

ノート

符号付きゼロのハードウェアおよびシステムレベルのサポートを備えたプラットフォームでは、分岐カットを含む関数は、分岐カットの両側側で連続します。ゼロの符号は、分岐カットの一方の側を他方から区別します。 符号付きゼロをサポートしないプラットフォームでは、連続性は以下に指定されているとおりです。


9.3.1。 極座標との間の変換

Pythonの複素数zは、長方形またはデカルト座標を使用して内部的に格納されます。 それは、その実数部 z.realとその虚数部 z.imagによって完全に決定されます。 言い換えると:

z == z.real + z.imag*1j

極座標は、複素数を表す別の方法を提供します。 極座標では、複素数 z はモジュラス r と位相角 phi によって定義されます。 モジュラス r は、 z から原点までの距離であり、位相 phi は、正のx軸から原点を z に結合する線分。

次の関数を使用して、ネイティブの直交座標から極座標に変換したり、元に戻したりすることができます。

cmath.phase(x)

xx引数とも呼ばれます)の位相をフロートとして返します。 phase(x)math.atan2(x.imag, x.real)と同等です。 結果は[-π、π]の範囲にあり、この操作の分岐カットは負の実軸に沿って上から連続しています。 符号付きゼロをサポートするシステム(現在使用されているほとんどのシステムを含む)では、これは、x.imagがゼロの場合でも、結果の符号がx.imagの符号と同じであることを意味します。

>>> phase(complex(-1.0, 0.0))
3.1415926535897931
>>> phase(complex(-1.0, -0.0))
-3.1415926535897931

バージョン2.6の新機能。

ノート

複素数 x の係数(絶対値)は、組み込みの abs()関数を使用して計算できます。 この操作には、個別の cmath モジュール関数はありません。


cmath.polar(x)

x の表現を極座標で返します。 ペア(r, phi)を返します。ここで、 rx のモジュラスであり、phiは x の位相です。 polar(x)(abs(x), phase(x))と同等です。

バージョン2.6の新機能。

cmath.rect(r, phi)

極座標 r および phi の複素数 x を返します。 r * (math.cos(phi) + math.sin(phi)*1j)と同等です。

バージョン2.6の新機能。


9.3.2。 パワー関数と対数関数

cmath.exp(x)
指数値e**xを返します。
cmath.log(x[, base])

x の対数を指定されたベースに返します。 base が指定されていない場合、 x の自然対数を返します。 負の実軸に沿った0から-∞まで、上から連続する1つのブランチカットがあります。

バージョン2.4で変更: base 引数が追加されました。

cmath.log10(x)
x の10を底とする対数を返します。 これは、 log()と同じブランチカットを持っています。
cmath.sqrt(x)
x の平方根を返します。 これは、 log()と同じブランチカットを持っています。


9.3.3。 三角関数

cmath.acos(x)
x のアークコサインを返します。 2つのブランチカットがあります。1つは実軸に沿って1から∞まで右に伸び、下から連続しています。 もう1つは、実軸に沿って-1から-∞まで左に伸び、上から連続しています。
cmath.asin(x)
x のアークサインを返します。 これには、 acos()と同じブランチカットがあります。
cmath.atan(x)

x のアークタンジェントを返します。 2つのブランチカットがあります。1つは仮想軸に沿って1jから∞jまで伸び、右から連続しています。 もう1つは、-1jから虚軸に沿って-∞jまで伸び、左から連続しています。

バージョン2.6で変更:アッパーカットの連続性の方向が逆になりました

cmath.cos(x)
x の余弦を返します。
cmath.sin(x)
x の正弦を返します。
cmath.tan(x)
x の接線を返します。


9.3.4。 双曲線関数

cmath.acosh(x)
x の逆双曲線コサインを返します。 実軸に沿って1から-∞まで左に伸び、上から連続する1つの分岐カットがあります。
cmath.asinh(x)

x の逆双曲線正弦を返します。 2つのブランチカットがあります。1つは仮想軸に沿って1jから∞jまで伸び、右から連続しています。 もう1つは、-1jから虚軸に沿って-∞jまで伸び、左から連続しています。

バージョン2.6で変更:ブランチカットがC99標準で推奨されているものと一致するように移動されました

cmath.atanh(x)

x の逆双曲線正接を返します。 2つのブランチカットがあります。1つは実軸に沿って1からまで伸び、下から連続しています。 もう1つは、実軸に沿って-1から-∞まで伸び、上から連続しています。

バージョン2.6で変更:右カットの連続性の方向が逆になりました

cmath.cosh(x)
x の双曲線コサインを返します。
cmath.sinh(x)
x の双曲線正弦を返します。
cmath.tanh(x)
x の双曲線正接を返します。


9.3.5。 分類関数

cmath.isinf(x)

xの実数部または虚数部が正または負の無限大である場合は、Trueを返します。

バージョン2.6の新機能。

cmath.isnan(x)

xの実数部または虚数部が数値(NaN)でない場合は、Trueを返します。

バージョン2.6の新機能。


9.3.6。 定数

cmath.pi
浮動小数点としての数学定数π
cmath.e
フロートとしての数学定数 e

関数の選択は、モジュール math の選択と似ていますが、同一ではないことに注意してください。 2つのモジュールがある理由は、一部のユーザーは複素数に興味がなく、おそらくそれらが何であるかさえ知らないためです。 彼らは、複素数を返すよりも、math.sqrt(-1)に例外を発生させたいと考えています。 また、 cmath で定義された関数は、答えが実数として表現できる場合でも、常に複素数を返すことに注意してください(この場合、複素数の虚数部はゼロです)。

分岐カットに関する注意:これらは、指定された関数が連続しない曲線です。 それらは多くの複雑な機能に必要な機能です。 複雑な関数を使用して計算する必要がある場合は、ブランチカットについて理解していることを前提としています。 悟りのための複雑な変数に関するほとんどすべての(あまり初歩的ではない)本を参照してください。 数値目的でのブランチカットの適切な選択については、次の参照をお勧めします。

も参照してください

カハン、W:複雑な初等関数の分岐カット。 または、何の符号ビットについても大騒ぎします。 Iserles、A。、およびPowell、M。 (編)、数値解析の最先端。 Clarendon Press(1987)pp165–211。