Библиотека численного интегрирования C++

Кто-нибудь знает библиотеку С++ для численного интегрирования образцов (точки данных (x, y)), например, scipy integration.simps? Я знаю, что это не сложно реализовать самому (на самом деле я уже это сделал), но мне нужно делать это очень часто для больших наборов данных, поэтому я ищу, возможно, более быструю реализацию библиотеки. Я уже проверил буст и гсл, но ничего не нашел!

Спасибо и ура

Почему для вас важно, чтобы библиотека была на C++? Разве вы не можете использовать любую библиотеку (например, общую библиотеку .so или .dll)? Возможно, это также причина, по которой вы его не нашли, это не похоже на что-то особенно специфичное для языка.
Конечно, подойдет любая библиотека, если она совместима с моим кодом.
как насчет того, чтобы сделать ваш код совместимым с библиотекой?
:-) .. тоже хорошо, но как я писал ниже, написание интерполирующей функции для получения непрерывной функции не помогает, так как это замедлит вычисление. Таким образом, я ищу библиотеку, функцию, которая может обрабатывать массив, вектор, что угодно, с фиксированным количеством точек!

Ответы (1)

Вы должны рассмотреть относительно популярную научную библиотеку GNU (GSL), которая, кстати, используется внутри GCC (хотя и не является частью числового интегрирования).

В нем есть довольно длинный раздел руководства по числовой интеграции, описывающий:

  • QNG неадаптивное интегрирование Гаусса-Кронрода
  • Адаптивная интеграция QAG
    • с особенностями
    • с известными особыми точками
    • на бесконечных интервалах:
    • для главных значений Коши:
    • для сингулярных функций
  • адаптивная интеграция
    • для колебательных функций
    • для интегралов Фурье
  • Двойная адаптивная интеграция CQUAD
  • Интеграция Гаусса-Лежандра с фиксированным порядком

И большинство/все они, похоже, основаны на выборке (а не на интеграции с использованием некоторого символического представления).

Он написан на C, но, кажется, вы готовы принять это.

Кроме того, в Википедии есть длинный список числовых библиотек на разных языках , включая C и C++. У меня не так много опыта работы с числами в C или C++ (только немного в MatLab), поэтому я не пробовал, но вам следует.

Если вы это сделаете, подумайте над тем, чтобы ответить на свой вопрос и сообщить, какие библиотеки соответствуют вашим требованиям (в основном) и какие вы выбрали.

Спасибо за ваше предложение, но, насколько я понимаю, все алгоритмы численного интегрирования GSL нуждаются в функции (const gsl_function * f) в качестве входных данных. Конечно, я мог бы интерполировать свои точки данных, чтобы получить непрерывную функцию, но это даже замедлило бы мои вычисления. Ни один из этих алгоритмов не принимает массив или вектор дискретных точек в качестве входных данных.