scipy.special.powm1#
- scipy.special.powm1(x, y, out=None) = <ufunc 'powm1'>#
計算
x**y - 1
。當 y 接近 0,或當 x 接近 1 時,此函數很有用。
此函數僅針對實數類型實作(與接受複數輸入的
numpy.power
不同)。- 參數:
- xarray_like
底數。必須為實數類型(即整數或浮點數,而非複數)。
- yarray_like
指數。必須為實數類型(即整數或浮點數,而非複數)。
- 返回:
- array_like
計算結果
註解
在版本 1.10.0 中新增。
底層程式碼僅針對單精度和雙精度浮點數實作。與
numpy.power
不同,powm1
的整數輸入會轉換為浮點數,且不接受複數輸入。請注意以下邊緣情況
powm1(x, 0)
對於任何x
(包括 0、inf
和nan
)皆返回 0。powm1(1, y)
對於任何y
(包括nan
和inf
)皆返回 0。
此函數封裝了 Boost Math C++ 函式庫 [1] 中的
powm1
常式。參考文獻
[1]The Boost Developers. “Boost C++ Libraries”. https://boost.dev.org.tw/.
範例
>>> import numpy as np >>> from scipy.special import powm1
>>> x = np.array([1.2, 10.0, 0.9999999975]) >>> y = np.array([1e-9, 1e-11, 0.1875]) >>> powm1(x, y) array([ 1.82321557e-10, 2.30258509e-11, -4.68749998e-10])
可以驗證這些結果中的相對誤差小於 2.5e-16。
將其與
x**y - 1
的結果進行比較,後者的相對誤差都大於 8e-8>>> x**y - 1 array([ 1.82321491e-10, 2.30258035e-11, -4.68750039e-10])