У меня есть своя небольшая подпрограмма для численного интегрирования (квадратура), которая представляет собой адаптацию C ++ программы ALGOL, опубликованной Bulirsch & Stoer в 1967 году (Numerische Mathematik, 9, 271-278).
Я хотел бы перейти на более современный (адаптивный) алгоритм и задаться вопросом, есть ли какие-либо (бесплатные) библиотеки C ++, которые предоставляют такие. Я выглядел как GSL (это C), но это идет с ужасным API (хотя цифры могут быть хорошими). Что-нибудь еще?
Полезный API будет выглядеть так:
double quadrature(double lower_integration_limit,
double upper_integration_limit,
std::function<double(double)> const&func,
double desired_error_bound_relative=1.e-12,
double desired_error_bound_absolute=0,
double*error_estimate=nullptr);
gsl_function
это указатель на функцию вместе с некоторым непрозрачным указателем на данные, который может содержать ваше состояние. Во-вторых, существуют некоторые проблемы с эффективностью (пере) распределения произвольно больших рабочих буферов, так что эта часть имеет хотя бы какое-то обоснованное обоснование.