Совокупные варианты интеграции с Юлией - PullRequest
3 голосов
/ 27 сентября 2019

У меня есть два 1-D массива, в которых я хотел бы вычислить приблизительный интегральный интеграл от 1 массива по отношению к скалярному интервалу, указанному 2-м массивом.В MATLAB есть функция cumtrapz, которая обрабатывает этот сценарий.Есть ли что-то подобное, что я могу попробовать в Юлии, чтобы сделать то же самое?

Ожидаемый результат - еще один одномерный массив с интегралом, рассчитанным для каждого элемента.

1 Ответ

1 голос
/ 27 сентября 2019

Существует пакет числовой интеграции для Джулии (см. ссылка ), который определяет 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...