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> 的整数输入将转换为浮点数,并且不接受复数输入。

注意以下 edge case

  • powm1(x, 0) 对任何 x 都返回 0,包括 0、infnan

  • powm1(1, y) 对任何 y 都返回 0,包括 naninf

示例

>>> 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])