trapezoid¶
在指定维度上对输入实现 trapezoid rule 算法。与 cumulative_trapezoid 的区别是,所用累积求和函数为 sum。
参数¶
y (Tensor) - 输入多维 Tensor,可选的数据类型为 float16、float32、float64。
x (Tensor,可选) -
y
中数值对应的浮点数所组成的 Tensor,类型与y
相同,形状与y
的形状相匹配;若x
有输入,已知y
的尺寸为 [d_1, d_2, ... , d_n] 且 axis=k,则x
的尺寸只能为 [d_k] 或 [d_1, d_2, ... , d_n];如果x
为 None,则假定采样点均匀分布dx
。dx (float,可选) - 相邻采样点之间的常数间隔;当
x
和dx
均未指定时,dx
默认为 1.0。axis (int,可选) - 计算 trapezoid rule 时
y
的维度。默认值 -1。name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
返回¶
Tensor,按 trapezoidal rule 计算出 y
等于 N 维张量时的定积分,如果 y
是一维张量,则结果是浮点数。如果 N 大于 1 维,则结果为 N-1 维张量。
代码示例¶
import paddle
y = paddle.to_tensor([4, 5, 6], dtype='float32')
print(paddle.trapezoid(y))
# Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
# 10.)
print(paddle.trapezoid(y, dx=2.))
# Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
# 20.)
y = paddle.to_tensor([4, 5, 6], dtype='float32')
x = paddle.to_tensor([1, 2, 3], dtype='float32')
print(paddle.trapezoid(y, x))
# Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
# 10.)
y = paddle.to_tensor([1, 2, 3], dtype='float64')
x = paddle.to_tensor([8, 6, 4], dtype='float64')
print(paddle.trapezoid(y, x))
# Tensor(shape=[], dtype=float64, place=Place(cpu), stop_gradient=True,
# -8.)
y = paddle.arange(6).reshape((2, 3)).astype('float32')
print(paddle.trapezoid(y, axis=0))
# Tensor(shape=[3], dtype=float32, place=Place(cpu), stop_gradient=True,
# [1.50000000, 2.50000000, 3.50000000])
print(paddle.trapezoid(y, axis=1))
# Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
# [2., 8.])