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 模組函式適用於此操作。

cmath.polar(z)

回傳 z 在極座標中的表達方式。回傳一組數對 (r, phi)rz 的絕對值, phiz 的相位角。 polar(z) 相當於 (abs(z), phase(z))

cmath.rect(r, phi)

透過極座標 rphi 回傳複數 z。相當於 complex(r * math.cos(phi), r * math.sin(phi))

冪函數和對數函數

cmath.exp(z)

回傳 ez 次方,其中 e 是自然對數的底數。

cmath.log(z[, base])

回傳 z 給定 base 的對數。如果未指定 base,則傳回 z 的自然對數。存在一條分枝切割,從 0 沿負實數軸到 -∞。

cmath.log10(z)

回傳 z 以 10 為底的對數。它與 log() 具有相同的分枝切割。

cmath.sqrt(z)

回傳 z 的平方根。它與 log() 具有相同的分枝切割。

三角函數

cmath.acos(z)

回傳 z 的反餘弦值。存在兩條分枝切割:一條是從 1 沿著實數軸向右延伸到 ∞。另一條從 -1 沿實數軸向左延伸到 -∞。

cmath.asin(z)

回傳 z 的反正弦值。它與 acos() 具有相同的分枝切割。

cmath.atan(z)

回傳 z 的反正切值。有兩條分枝切割:一條是從 1j 沿著虛軸延伸到 ∞j。另一條從 -1j 沿著虛軸延伸到 -∞j

cmath.cos(z)

回傳 z 的餘弦值。

cmath.sin(z)

回傳 z 的正弦值。

cmath.tan(z)

回傳 z 的正切值。

雙曲函數

cmath.acosh(z)

回傳 z 的反雙曲餘弦值。存在一條分枝切割,從 1 沿實數軸向左延伸到 -∞。

cmath.asinh(z)

回傳 z 的反雙曲正弦值。存在兩條分枝切割:一條是從 1j 沿著虛軸延伸到 ∞j。另一條從 -1j 沿著虛軸延伸到 -∞j

cmath.atanh(z)

回傳 z 的反雙曲正切值。存在兩條分枝切割:一條是從 1 沿著實數軸延伸到 。另一條從 -1 沿著實數軸延伸到 -∞

cmath.cosh(z)

回傳 z 的反雙曲餘弦值。

cmath.sinh(z)

回傳 z 的反雙曲正弦值。

cmath.tanh(z)

回傳 z 的反雙曲正切值。

分類函式

cmath.isfinite