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

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

cmath —複素数の数学関数


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

ノート

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


極座標との間の変換

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.141592653589793
>>> phase(complex(-1.0, -0.0))
-3.141592653589793

ノート

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


cmath.polar(x)
x の表現を極座標で返します。 ペア(r, phi)を返します。ここで、 rx のモジュラスであり、phiは x の位相です。 polar(x)(abs(x), phase(x))と同等です。
cmath.rect(r, phi)
極座標 r および phi の複素数 x を返します。 r * (math.cos(phi) + math.sin(phi)*1j)と同等です。


パワー関数と対数関数

cmath.exp(x)
ex の累乗で返します。ここで、 e は自然対数の底です。
cmath.log(x[, base])
x の対数を指定されたベースに返します。 base が指定されていない場合、 x の自然対数を返します。 負の実軸に沿った0から-∞まで、上から連続する1つのブランチカットがあります。
cmath.log10(x)
x の10を底とする対数を返します。 これは、 log()と同じブランチカットを持っています。
cmath.sqrt(x)
x の平方根を返します。 これは、 log()と同じブランチカットを持っています。


三角関数

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まで伸び、左から連続しています。
cmath.cos(x)
x の余弦を返します。
cmath.sin(x)
x の正弦を返します。
cmath.tan(x)
x の接線を返します。


双曲線関数

cmath.acosh(x)
x の逆双曲線コサインを返します。 実軸に沿って1から-∞まで左に伸び、上から連続する1つの分岐カットがあります。
cmath.asinh(x)
x の逆双曲線正弦を返します。 2つのブランチカットがあります。1つは仮想軸に沿って1jから∞jまで伸び、右から連続しています。 もう1つは、-1jから仮想軸に沿って-∞jまで伸び、左から連続しています。
cmath.atanh(x)
x の逆双曲線正接を返します。 2つのブランチカットがあります。1つは1から実軸に沿ってまで伸び、下から連続しています。 もう1つは、-1から実軸に沿って-∞まで伸び、上から連続しています。
cmath.cosh(x)
x の双曲線コサインを返します。
cmath.sinh(x)
x の双曲線正弦を返します。
cmath.tanh(x)
x の双曲線正接を返します。


分類関数

cmath.isfinite(x)

x の実数部と虚数部の両方が有限の場合はTrueを返し、それ以外の場合はFalseを返します。

バージョン3.2の新機能。

cmath.isinf(x)
x の実数部または虚数部が無限大の場合は、Trueを返し、それ以外の場合はFalseを返します。
cmath.isnan(x)
x の実数部または虚数部のいずれかがNaNの場合は、Trueを返し、それ以外の場合はFalseを返します。
cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

ab の値が近い場合はTrueを返し、そうでない場合はFalseを返します。

2つの値が近いと見なされるかどうかは、指定された絶対公差と相対公差に従って決定されます。

rel_tol は相対許容誤差です。これは、 a の大きい方の絶対値に対する ab の最大許容差です。 b 。 たとえば、許容誤差を5%に設定するには、rel_tol=0.05を渡します。 デフォルトの許容値は1e-09です。これにより、2つの値が約9桁以内で同じになることが保証されます。 rel_tol はゼロより大きくなければなりません。

abs_tol は最小絶対許容誤差であり、ゼロに近い比較に役立ちます。 abs_tol は少なくともゼロでなければなりません。

エラーが発生しない場合、結果はabs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)になります。

NaNinf、および-infのIEEE754特殊値は、IEEEルールに従って処理されます。 具体的には、NaNは、NaNを含む他の値に近いとは見なされません。 inf-infは、それら自体に近いと見なされるだけです。

バージョン3.5の新機能。

も参照してください

PEP 485 –近似等式をテストするための関数


定数

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

フロートとしての数学定数τ

バージョン3.6の新機能。

cmath.inf

浮動小数点の正の無限大。 float('inf')と同等です。

バージョン3.6の新機能。

cmath.infj

実数部がゼロで虚数部が正の複素数。 complex(0.0, float('inf'))と同等です。

バージョン3.6の新機能。

cmath.nan

浮動小数点の「数値ではない」(NaN)値。 float('nan')と同等です。

バージョン3.6の新機能。

cmath.nanj

実数部がゼロで虚数部がNaNの複素数。 complex(0.0, float('nan'))と同等です。

バージョン3.6の新機能。

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

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

も参照してください

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