torch.trapezoid
-
torch.trapezoid(y, x=None, *, dx=None, dim=- 1) → Tensor -
Вычисляет правило трапеций по
dim. По умолчанию расстояние между элементами предполагается равным 1, ноdxможет быть использовано для указания другого постоянного шага, аxможет быть использовано для указания произвольного шага поdim.Предполагая, что
y— это одномерный тензор с элементами , вычисление по умолчанию:Если
dxуказан, вычисление становится:что эффективно умножает результат на
dx. Когдаxуказан, предполагая, чтоxтакже является одномерным тензором с элементами , вычисление становитсяЕсли
xиyимеют одинаковый размер, вычисление выполняется как описано выше, и вещание не требуется. Поведение вещания этой функции следующее, когда их размеры разные. Дляxиy, функция вычисляет разницу между последовательными элементами по размеруdim. Это эффективно создает два тензора,x_diffиy_diff, которые имеют такую же форму, что и исходные тензоры, за исключением того, что их длина по размеруdimуменьшается на 1. После этого эти два тензора передаются вместе для вычисления конечного выходного значения как части правила трапеций. Подробности см. в примерах ниже.Примечание
Правило трапеций — это метод приближённого вычисления определённого интеграла функции путём усреднения левой и правой сумм Римана. Приближение становится более точным по мере увеличения разрешения разбиения.
- Параметры:
- Ключевые аргументы:
Примеры:
>>> # Computes the trapezoidal rule in 1D, spacing is implicitly 1 >>> y = torch.tensor([1, 5, 10]) >>> torch.trapezoid(y) tensor(10.5) >>> # Computes the same trapezoidal rule directly to verify >>> (1 + 10 + 10) / 2 10.5 >>> # Computes the trapezoidal rule in 1D with constant spacing of 2 >>> # NOTE: the result is the same as before, but multiplied by 2 >>> torch.trapezoid(y, dx=2) 21.0 >>> # Computes the trapezoidal rule in 1D with arbitrary spacing >>> x = torch.tensor([1, 3, 6]) >>> torch.trapezoid(y, x) 28.5 >>> # Computes the same trapezoidal rule directly to verify >>> ((3 - 1) * (1 + 5) + (6 - 3) * (5 + 10)) / 2 28.5 >>> # Computes the trapezoidal rule for each row of a 3x3 matrix >>> y = torch.arange(9).reshape(3, 3) tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> torch.trapezoid(y) tensor([ 2., 8., 14.]) >>> # Computes the trapezoidal rule for each column of the matrix >>> torch.trapezoid(y, dim=0) tensor([ 6., 8., 10.]) >>> # Computes the trapezoidal rule for each row of a 3x3 ones matrix >>> # with the same arbitrary spacing >>> y = torch.ones(3, 3) >>> x = torch.tensor([1, 3, 6]) >>> torch.trapezoid(y, x) array([5., 5., 5.]) >>> # Computes the trapezoidal rule for each row of a 3x3 ones matrix >>> # with different arbitrary spacing per row >>> y = torch.ones(3, 3) >>> x = torch.tensor([[1, 2, 3], [1, 3, 5], [1, 4, 7]]) >>> torch.trapezoid(y, x) array([2., 4., 6.])
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.trapezoid.html