cumulative_trapezoid¶
在指定维度上对输入实现 trapezoid rule 算法。与 trapezoid 的区别是,所用累积求和函数为 cumsum。
参数¶
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 维张量时的定积分,结果为 N 维张量。
代码示例¶
import paddle
y = paddle.to_tensor([4, 5, 6], dtype='float32')
print(paddle.cumulative_trapezoid(y))
# Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
# [4.50000000, 10. ])
print(paddle.cumulative_trapezoid(y, dx=2.))
# Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
# [9. , 20.])
y = paddle.to_tensor([4, 5, 6], dtype='float32')
x = paddle.to_tensor([1, 2, 3], dtype='float32')
print(paddle.cumulative_trapezoid(y, x))
# Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
# [4.50000000, 10. ])
y = paddle.to_tensor([1, 2, 3], dtype='float64')
x = paddle.to_tensor([8, 6, 4], dtype='float64')
print(paddle.cumulative_trapezoid(y, x))
# Tensor(shape=[2], dtype=float64, place=Place(cpu), stop_gradient=True,
# [-3., -8.])
y = paddle.arange(6).reshape((2, 3)).astype('float32')
print(paddle.cumulative_trapezoid(y, axis=0))
# Tensor(shape=[1, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
# [[1.50000000, 2.50000000, 3.50000000]])
print(paddle.cumulative_trapezoid(y, axis=1))
# Tensor(shape=[2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
# [[0.50000000, 2. ],
# [3.50000000, 8. ]])