Существует пакет числовой интеграции для Джулии (см. ссылка ), который определяет cumul_integrate(X, Y)
и использует правило трапеции по умолчанию.
Если этот пакет не существовал, хотяВы можете легко написать функцию самостоятельно и получить очень эффективную реализацию из коробки, потому что цикл не приводит к снижению производительности.
Edit : добавлен @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