math --- 數學函式


此模組提供對常見數學函式與常數的存取,包括於 C 標準中定義的那些。

這些函式不支援複數;若你需要計算複數,請使用 cmath 模組的同名函式。這是因為大多數的使用者並不想學習那麼多理解複數所需的數學概念,所以根據支援複數與否分為兩種函式。收到一個例外而非複數回傳值,有助於程式設計師提早察覺參數中包含非預期的複數,進而從源頭查出導致此情況的原因。

此模組提供下列函式。除非特意註明,否則回傳值皆為浮點數。

數論函式

comb(n, k)

n 個物品中不重複且不考慮排序地取出 k 個物品的方法數。

factorial(n)

n 的階乘

gcd(*integers)

整數引數的最大公因數

isqrt(n)

非負整數 n 的整數平方根

lcm(*integers)

整數引數的最小公倍數

perm(n, k)

n 個物品中不重複但考慮排序地取出 k 個物品的方法數。

浮點數算術運算

ceil(x)

x 的上取整值,即大於或等於 x 的最小整數

fabs(x)

x 的絕對值。

floor(x)

x 的下取整值,即小於或等於 x 的最大整數

fma(x, y, z)

融合乘加運算:(x * y) + z

fmod(x, y)

除法 x / y 的餘數

modf(x)

x 的小數部分與整數部分

remainder(x, y)

x 相對於 y 的餘數

trunc(x)

x 的整數部分

浮點數操作函式

copysign(x, y)

帶有 y 的正負號的 x 的量值(絕對值)

frexp(x)

x 的尾數與指數

isclose(a, b, rel_tol, abs_tol)

檢查 ab 兩值是否足夠接近

isfinite(x)

檢查 x 是否既非無限值也非 NaN

isinf(x)

檢查 x 是否為正無限或負無限

isnan(x)

檢查 x 是否為 NaN(非數值)

ldexp(x, i)

x * (2**i)frexp() 的反函式

nextafter(x, y, steps)

xy 移動 steps 步的浮點數值

ulp(x)

x 的最低有效位元的值

次方、指數與對數函式

cbrt(x)

x 的立方根

exp(x)

ex 次方

exp2(x)

2x 次方

expm1(x)

ex 次方減 1

log(x, base)

x 以給定底數(預設為 e)的對數

log1p(x)

1+x 的自然對數(以 e 為底)

log2(x)

x 的以 2 為底的對數

log10(x)

x 的以 10 為底的對數

pow(x, y)

xy 次方

sqrt(x)

x 的平方根

總和與乘積函式

dist(p, q)

兩點 pq 之間的歐幾里得距離,各點以座標的可疊代物件表示

fsum(iterable)

輸入 iterable 中所有值的總和

hypot(*coordinates)

座標可疊代物件的歐幾里得範數

prod(iterable, start)

輸入 iterable 中所有元素與 start 起始值的乘積

sumprod(p, q)

兩個可疊代物件 pq 各元素乘積的總和

角度轉換

degrees(x)

將角度 x 從弧度轉換為度

radians(x)

將角度 x 從度轉換為弧度

三角函式

acos(x)

x 的反餘弦

asin(x)

x 的反正弦

atan(x)

x 的反正切

atan2(y, x)

atan(y / x)

cos(x)

x 的餘弦

sin(x)

x 的正弦

tan(x)

x 的正切

雙曲函式

acosh(x)

x 的反雙曲餘弦

asinh(x)

x 的反雙曲正弦

atanh(x)

x 的反雙曲正切

cosh(x)

x 的雙曲餘弦

sinh(x)

x 的雙曲正弦

tanh(x)

x 的雙曲正切

特殊函式

erf(x)

x 處的誤差函式

erfc(x)

x 處的互補誤差函式

gamma(x)

x 處的 Gamma 函式

lgamma(x)

x 處的 Gamma 函式絕對值的自然對數

常數

pi

π = 3.141592...

e

e = 2.718281...

tau

τ = 2π = 6.283185...

inf

正無限大

nan

「非數值」(NaN)

數論函式

math.comb(n, k)

回傳從 n 個物品中不重複且不考慮排序地取出 k 個物品的方法數。

k <= n 時其值為 n! / (k! * (n - k)!),否則其值為 0

因為此值等同於 (1 + x)ⁿ 進行多項式展開後第 k 項的係數,所以又稱為二項式係數。

當任一參數非整數型別時會引發 TypeError。當任一參數為負數時會引發 ValueError

在 3.8 版被加入.

math.factorial(n)

回傳非負整數 n 的階乘。

在 3.10 版的變更: 現在已經不允許傳入其值為整數的浮點數(如:5.0)。

math.gcd(*integers)

回傳指定整數引數的最大公因數。若存在任一非零引數,回傳值為所有引數共有因數中最大的正整數。若所有引數皆為零,則回傳值為 0gcd() 若未傳入任何引數也將回傳 0

在 3.5 版被加入.

在 3.9 版的變更: 新增支援任意數量的引數。先前僅支援兩個引數。

math.isqrt(n)

回傳非負整數 n 的整數平方根。此值為 n 精確平方根經下取整的值,亦等同於滿足 a² ≤ n 的最大整數值 a

於有些應用程式中,取得滿足 n ≤ a² 的最小整數值 a ── 或者說 n 精確平方根經上取整的值 ── 會更加方便。對正數 n,此值可使用 a = 1 + isqrt(n - 1) 計算。

在 3.8 版被加入.

math.lcm(*integers)

回傳指定整數引數的最小公倍數。若所有引數值皆非零,回傳值為所有引數共有倍數中最小的正整數。若存在任一引數值為零,則回傳值為 0lcm() 若未傳入任何引數將回傳 1

在 3.9 版被加入.

math.perm(n, k=