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,包括 0、inf
和nan
。powm1(1, y)
对于任何y
返回 0,包括nan
和inf
。
此函数包装了 Boost Math C++ 库中的
powm1
例程 [1]。参考文献
[1]Boost 开发人员。“Boost C++ Libraries”。https://boost.ac.cn/。
示例
>>> 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])