У мене є своя маленька підпрограма для числової інтеграції (квадратури), яка є адаптацією 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
- це покажчик функції разом із деяким непрозорим покажчиком даних, який може містити ваш стан. По-друге, є певні занепокоєння щодо ефективності (повторного) розподілу довільно великих робочих буферів, так що ця частина має хоча б якесь вагоме обґрунтування.