【发布时间】:2020-01-28 01:18:22
【问题描述】:
我有两个一维数组,我想在其中计算 1 个数组相对于第二个数组指定的标量间距的近似累积积分。 MATLAB 有一个名为 cumtrapz 的函数来处理这种情况。有没有类似的东西我可以在 Julia 中尝试完成同样的事情?
预期结果是另一个一维数组,其中每个元素都计算了积分。
【问题讨论】:
标签: julia numerical-integration
我有两个一维数组,我想在其中计算 1 个数组相对于第二个数组指定的标量间距的近似累积积分。 MATLAB 有一个名为 cumtrapz 的函数来处理这种情况。有没有类似的东西我可以在 Julia 中尝试完成同样的事情?
预期结果是另一个一维数组,其中每个元素都计算了积分。
【问题讨论】:
标签: julia numerical-integration
Julia 有一个数值积分包(参见link),它定义了cumul_integrate(X, Y),默认使用梯形规则。
不过,如果这个包不存在,您可以轻松地自己编写函数,并且开箱即用地实现非常高效,因为循环不会带来性能损失。
编辑:添加了一个@assert 来检查匹配的矢量尺寸并修正了一个错字。
function cumtrapz(X::T, Y::T) where {T <: AbstractVector}
# Check matching vector length
@assert length(X) == length(Y)
# Initialize Output
out = similar(X)
out[1] = 0
# Iterate over arrays
for i in 2:length(X)
out[i] = out[i-1] + 0.5*(X[i] - X[i-1])*(Y[i] + Y[i-1])
end
# Return output
out
end
【讨论】: