cmath --- 複數的數學函式


本模組提供一些適用於複數的數學函式。本模組中的函式接受整數、浮點數或複數作為引數。它們也接受任何具有 __complex__()__float__() 方法的 Python 物件:這些方法分別用於將物件轉換為複數或浮點數,然後再將函式應用於轉換後的結果。

備註

對於涉及分枝切割 (branch cut) 的函式,我們面臨的問題是決定如何定義在切割本身上的這些函式。遵循 Kahan 的論文 "Branch cuts for complex elementary functions",以及 C99 的附錄 G 和後來的 C 標準,我們使用零符號來區分分枝切割的兩側:對於沿著(一部分)實數軸的分枝切割,我們查看虛部的符號,而對於沿虛軸的分枝切割,我們則查看實部的符號。

例如 cmath.sqrt() 函式具有一條沿負實軸的分枝切割。 引數 -2-0j 被視為位於分枝切割 下方 處理,因此給出的結果在負虛軸上:

>>> cmath.sqrt(-2-0j)
-1.4142135623730951j

但是引數 -2+0j 會被當成位於分枝切割上方處理:

>>> cmath.sqrt(-2+0j)
1.4142135623730951j

轉換到極座標和從極座標做轉換

phase(z)

回傳 z 的相位角。

polar(z)

回傳 z 在極座標中的表達方式。

rect(r, phi)

透過極座標 rphi 回傳複數 z

冪函數和對數函數

exp(z)

回傳 ez 次方。

log(z[, base])

回傳 z 以給定 base 為底(預設為 e)的對數。

log10(z)

回傳 z 以 10 為底的對數。

sqrt(z)

回傳 z 的平方根。

三角函數

acos(z)

回傳 z 的反餘弦值。

asin(z)

回傳 z 的反正弦值。

atan(z)

回傳 z 的反正切值。

cos(z)

回傳 z 的餘弦值。

sin(z)

回傳 z 的正弦值。

tan(z)

回傳 z 的正切值。

雙曲函數

acosh(z)

回傳 z 的反雙曲餘弦值。

asinh(z)

回傳 z 的反雙曲正弦值。

atanh(z)

回傳 z 的反雙曲正切值。

cosh(z)

回傳 z 的雙曲餘弦值。

sinh(z)

回傳 z 的雙曲正弦值。

tanh(z)

回傳 z 的雙曲正切值。

分類函數

isfinite(z)

Check if all components of z are finite

isinf(z)

Check if any component of z is infinite

isnan(z)

Check if any component of z is a NaN

isclose(a, b, *, rel_tol, abs_tol)

檢查 ab 的值是否接近

常數

pi

π = 3.141592...

e

e = 2.718281...

tau

τ = 2π = 6.283185...

inf

Positive infinity

infj

Pure imaginary infinity

nan

"Not a number" (NaN)

nanj

Pure imaginary NaN

轉換到極座標和從極座標做轉換

Python 複數 z 是用 直角坐標笛卡爾坐標 儲存在內部的。它完全是由其 實部 z.real虛部 z.imag 所決定。

極座標 提供了另一種表示複數的方法。在極座標中,複數 z 由絕對值 (modulus) r 和相位角 (phase) phi 定義。絕對值 r 是從 z 到原點的距離,而相位角 phi 是從正 x 軸到連接原點到 z 的線段的逆時針角度(以弧度為單位)。

以下的函式可用於原始直角座標與極座標之間的相互轉換。

cmath.phase(z)

以浮點數的形式回傳 z 的相位角(也稱為 z引數 )。phase(z) 等價於 math.atan2(z.imag, z.real)。結果將位於 [-π, π] 的範圍內,且此操作的分枝切割將位於負實軸上。結果的符號會與 z.imag 的符號相同,即使 z.imag 為零:

>>> phase(-1+0j)
3.141592653589793
>>> phase(-1-0j)
-3.141592653589793

備註

複數 z 的絕對值可以使用內建的 abs() 函式計算。沒有單獨的 cmath 模組函式適用於此操作。