cmath --- 關(guān)于復數的數學(xué)函數?


這一模塊提供了一些關(guān)于復數的數學(xué)函數。 該模塊的函數的參數為整數、浮點(diǎn)數或復數。 這些函數的參數也可為一個(gè)擁有 __complex__()__float__() 方法的 Python 對象,這些方法分別用于將對象轉換為復數和浮點(diǎn)數,這些函數作用于轉換后的結果。

備注

在具有對于有符號零的硬件和系統級支持的平臺上,涉及支割線(xiàn)的函數在支割線(xiàn)的 兩側 都是連續的:零的符號可用來(lái)區別支割線(xiàn)的一側和另一側。 在不支持有符號零的平臺上,連續性的規則見(jiàn)下文。

到極坐標和從極坐標的轉換?

使用 矩形坐標笛卡爾坐標 在內部存儲 Python 復數 z。 這完全取決于它的 實(shí)部 z.real虛部 z.imag。 換句話(huà)說(shuō):

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

極坐標 提供了另一種復數的表示方法。在極坐標中,一個(gè)復數 z 由模量 r 和相位角 phi 來(lái)定義。模量 r 是從 z 到坐標原點(diǎn)的距離,而相位角 phi 是以弧度為單位的,逆時(shí)針的,從正X軸到連接原點(diǎn)和 z 的線(xiàn)段間夾角的角度。

下面的函數可用于原生直角坐標與極坐標的相互轉換。

cmath.phase(x)?

x 的相位 (也稱(chēng)為 x參數) 返回為一個(gè)浮點(diǎn)數。phase(x) 相當于 math.atan2(x.imag, x.real)。 結果處于 [-π, π] 之間,以及這個(gè)操作的分支切斷處于負實(shí)軸上,從上方連續。 在支持有符號零的系統上(這包涵大多數當前的常用系統),這意味著(zhù)結果的符號與 x.imag 的符號相同,即使 x.imag 的值是 0:

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

備注

一個(gè)復數 x 的模數(絕對值)可以通過(guò)內置函數 abs() 計算。沒(méi)有單獨的 cmath 模塊函數用于這個(gè)操作。

cmath.polar(x)?

在極坐標中返回 x 的表達方式。返回一個(gè)數對 (r, phi),rx 的模數,phix 的相位角。 polar(x) 相當于 (abs(x), phase(x))。

cmath.rect(r, phi)?

通過(guò)極坐標的 rphi 返回復數 x。相當于 r * (math.cos(phi) + math.sin(phi)*1j)。

冪函數與對數函數?

cmath.exp(x)?

返回 ex 次方,e 是自然對數的底數。

cmath.log(x[, base])?

返回給定 basex 的對數。如果沒(méi)有給定 base,返回 x 的自然對數。 從 0 到 -∞ 存在一條支割線(xiàn),沿負實(shí)軸之上連續。

cmath.log10(x)?

返回底數為 10 的 x 的對數。它具有與 log() 相同的支割線(xiàn)。

cmath.sqrt(x)?

返回 x 的平方根。 它具有與 log() 相同的支割線(xiàn)。

三角函數?

cmath.acos(x)?

返回 x 的反余弦。這里有兩條支割線(xiàn):一條沿著(zhù)實(shí)軸從 1 向右延伸到 ∞,從下面連續延伸。另外一條沿著(zhù)實(shí)軸從 -1 向左延伸到 -∞,從上面連續延伸。

cmath.asin(x)?

返回 x 的反正弦。它與 acos() 有相同的支割線(xiàn)。

cmath.atan(x)?

返回 x 的反正切。它具有兩條支割線(xiàn):一條沿著(zhù)虛軸從 1j 延伸到 ∞j,向右持續延伸。另一條是沿著(zhù)虛軸從 -1j 延伸到 -∞j ,向左持續延伸。

cmath.cos(x)?

返回 x 的余弦。

cmath.sin(x)?

返回 x 的正弦。

cmath.tan(x)?

返回 x 的正切。

雙曲函數?

cmath.acosh(x)?

返回 x 的反雙曲余弦。它有一條支割線(xiàn)沿著(zhù)實(shí)軸從 1 到 -∞ 向左延伸,從上方持續延伸。

cmath.asinh(x)?

返回 x 的反雙曲正弦。它有兩條支割線(xiàn):一條沿著(zhù)虛軸從 1j 向右持續延伸到 ∞j。另一條是沿著(zhù)虛軸從 -1j 向左持續延伸到 -∞j。

cmath.atanh(x)?

返回 x 的反雙曲正切。它有兩條支割線(xiàn):一條是沿著(zhù)實(shí)軸從 1 延展到 ,從下面持續延展。另一條是沿著(zhù)實(shí)軸從 -1 延展到 -∞,從上面持續延展。

cmath.cosh(x)?

返回 x 的雙曲余弦值。

cmath.sinh(x)?

返回 x 的雙曲正弦值。

cmath.tanh(x)?

返回 x 的雙曲正切值。

分類(lèi)函數?

cmath.isfinite(x)?

如果 x 的實(shí)部和虛部都是有限的,則返回 True,否則返回 False。

3.2 新版功能.

cmath.isinf(x)?

如果 x 的實(shí)部或者虛部是無(wú)窮大的,則返回 True,否則返回 False。

cmath.isnan(x)?

如果 x 的實(shí)部或者虛部是 NaN,則返回 True ,否則返回 False。

cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)?

ab 的值比較接近則返回 True,否則返回 False。

根據給定的絕對和相對容差確定兩個(gè)值是否被認為是接近的。

rel_tol 是相對容差 —— 它是 ab 之間允許的最大差值,相對于 ab 的較大絕對值。例如,要設置5%的容差,請傳遞 rel_tol=0.05 。默認容差為 1e-09,確保兩個(gè)值在大約9位十進(jìn)制數字內相同。 rel_tol 必須大于零。

abs_tol 是最小絕對容差 —— 對于接近零的比較很有用。 abs_tol 必須至少為零。

如果沒(méi)有錯誤發(fā)生,結果將是: abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol) 。

IEEE 754特殊值 NaN , inf-inf 將根據IEEE規則處理。具體來(lái)說(shuō), NaN 不被認為接近任何其他值,包括 NaN 。 inf-inf 只被認為接近自己。

3.5 新版功能.

參見(jiàn)

PEP 485 —— 用于測試近似相等的函數

常量?

cmath.pi?

數學(xué)常數 π ,作為一個(gè)浮點(diǎn)數。

cmath.e?

數學(xué)常數 e ,作為一個(gè)浮點(diǎn)數。

cmath.tau?

數學(xué)常數 τ ,作為一個(gè)浮點(diǎn)數。

3.6 新版功能.

cmath.inf?

浮點(diǎn)正無(wú)窮大。相當于 float('inf')。

3.6 新版功能.

cmath.infj?

具有零實(shí)部和正無(wú)窮虛部的復數。相當于 complex(0.0, float('inf'))。

3.6 新版功能.

cmath.nan?

浮點(diǎn)“非數字”(NaN)值。相當于 float('nan')。

3.6 新版功能.

cmath.nanj?

具有零實(shí)部和 NaN 虛部的復數。相當于 complex(0.0, float('nan'))。

3.6 新版功能.

請注意,函數的選擇與模塊 math 中的函數選擇相似,但不完全相同。 擁有兩個(gè)模塊的原因是因為有些用戶(hù)對復數不感興趣,甚至根本不知道它們是什么。它們寧愿 math.sqrt(-1) 引發(fā)異常,也不想返回一個(gè)復數。 另請注意,被 cmath 定義的函數始終會(huì )返回一個(gè)復數,盡管答案可以表示為一個(gè)實(shí)數(在這種情況下,復數的虛數部分為零)。

關(guān)于支割線(xiàn)的注釋?zhuān)核鼈兪茄刂?zhù)給定函數無(wú)法連續的曲線(xiàn)。它們是許多復變函數的必要特征。 假設您需要使用復變函數進(jìn)行計算,您將會(huì )了解支割線(xiàn)的概念。 請參閱幾乎所有關(guān)于復變函數的(不太基本)的書(shū)來(lái)獲得啟發(fā)。 對于如何正確地基于數值目的來(lái)選擇支割線(xiàn)的相關(guān)信息,一個(gè)良好的參考如下:

參見(jiàn)

Kahan, W: Branch cuts for complex elementary functions; or, Much ado about nothing's sign bit. In Iserles, A., and Powell, M. (eds.), The state of the art in numerical analysis. Clarendon Press (1987) pp165--211.