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、infnan)皆返回 0。

  • powm1(1, y) 對於任何 y(包括 naninf)皆返回 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])