scipy.special.powm1#
-
scipy.special.powm1(x, y, выход=None) =
'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)возвращает 0 для любогоx, включая 0,infиnan.powm1(1, y)возвращает 0 для любогоy, включаяnanиinf.
Эта функция оборачивает
powm1подпрограмма из библиотеки Boost Math C++ [1].Ссылки
[1]Разработчики Boost. «Boost C++ Libraries». https://www.boost.org/.
Примеры
>>> 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])