Julia 的累积集成选项

Cumulative Integration Options With Julia

我有两个一维数组,我想在其中计算 1 个数组相对于第二个数组指定的标量间距的近似累积积分。 MATLAB 有一个名为 cumtrapz 的函数来处理这种情况。有没有类似的东西我可以在 Julia 中尝试完成同样的事情?

预期的结果是另一个一维数组,每个元素都计算了积分。


有一个用于 Julia 的数值积分包(见链接),它定义了 cumul_integrate(X, Y) 并且默认使用梯形规则。

但是,如果这个包不存在,您可以轻松地自己编写函数,并且开箱即用地实现非常有效的实现,因为循环不会带来性能损失。

编辑:添加了一个@assert 来检查匹配的向量尺寸并修复了一个错字。

1
2
3
4
5
6
7
8
9
10
11
12
13
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