【问题标题】:Cumulative Integration Options With JuliaJulia 的累积集成选项
【发布时间】:2020-01-28 01:18:22
【问题描述】:

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

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

【问题讨论】:

    标签: julia numerical-integration


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2013-08-15
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多