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)? 將 x 的相位 (也稱為 x 的 參數) 返回為一個浮點數。
phase(x)相當于math.atan2(x.imag, x.real)。 結果處于 [-π, π] 之間,以及這個操作的分支切斷處于負實軸上,從上方連續。 在支持有符號零的系統上(這包涵大多數當前的常用系統),這意味著結果的符號與x.imag的符號相同,即使x.imag的值是 0:>>> phase(complex(-1.0, 0.0)) 3.141592653589793 >>> phase(complex(-1.0, -0.0)) -3.141592653589793
-
cmath.polar(x)? 在極坐標中返回 x 的表達方式。返回一個數對
(r, phi),r 是 x 的模數,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)? 返回 e 的 x 次方,e 是自然對數的底數。
-
cmath.log(x[, base])? 返回給定 base 的 x 的對數。如果沒有給定 base,返回 x 的自然對數。 從 0 到 -∞ 存在一條支割線,沿負實軸之上連續。
三角函數?
-
cmath.acos(x)? 返回 x 的反余弦。這里有兩條支割線:一條沿著實軸從 1 向右延伸到 ∞,從下面連續延伸。另外一條沿著實軸從 -1 向左延伸到 -∞,從上面連續延伸。
-
cmath.atan(x)? 返回 x 的反正切。它具有兩條支割線:一條沿著虛軸從
1j延伸到∞j,向右持續延伸。另一條是沿著虛軸從-1j延伸到-∞j,向左持續延伸。
-
cmath.cos(x)? 返回 x 的余弦。
-
cmath.sin(x)? 返回 x 的正弦。
-
cmath.tan(x)? 返回 x 的正切。
雙曲函數?
-
cmath.acosh(x)? 返回 x 的反雙曲余弦。它有一條支割線沿著實軸從 1 到 -∞ 向左延伸,從上方持續延伸。
-
cmath.asinh(x)? 返回 x 的反雙曲正弦。它有兩條支割線:一條沿著虛軸從
1j向右持續延伸到∞j。另一條是沿著虛軸從-1j向左持續延伸到-∞j。
-
cmath.atanh(x)? 返回 x 的反雙曲正切。它有兩條支割線:一條是沿著實軸從
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)? 若 a 和 b 的值比較接近則返回
True,否則返回False。根據給定的絕對和相對容差確定兩個值是否被認為是接近的。
rel_tol 是相對容差 —— 它是 a 和 b 之間允許的最大差值,相對于 a 或 b 的較大絕對值。例如,要設置5%的容差,請傳遞
rel_tol=0.05。默認容差為1e-09,確保兩個值在大約9位十進制數字內相同。 rel_tol 必須大于零。abs_tol 是最小絕對容差 —— 對于接近零的比較很有用。 abs_tol 必須至少為零。
如果沒有錯誤發生,結果將是:
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)。IEEE 754特殊值
NaN,inf和-inf將根據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 中的函數選擇相似,但不完全相同。 擁有兩個模塊的原因是因為有些用戶對復數不感興趣,甚至根本不知道它們是什么。它們寧愿 math.sqrt(-1) 引發異常,也不想返回一個復數。 另請注意,被 cmath 定義的函數始終會返回一個復數,盡管答案可以表示為一個實數(在這種情況下,復數的虛數部分為零)。
關于支割線的注釋:它們是沿著給定函數無法連續的曲線。它們是許多復變函數的必要特征。 假設您需要使用復變函數進行計算,您將會了解支割線的概念。 請參閱幾乎所有關于復變函數的(不太基本)的書來獲得啟發。 對于如何正確地基于數值目的來選擇支割線的相關信息,一個良好的參考如下:
參見
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.
