Tengo mi propia subrutina para la integración numérica (cuadratura), que es una adaptación en C ++ de un programa ALGOL publicado por Bulirsch & Stoer en 1967 (Numerische Mathematik, 9, 271-278).
Me gustaría actualizar a un algoritmo más moderno (adaptativo) y preguntarme si hay bibliotecas C ++ (gratuitas) que lo proporcionen. Tenía un aspecto como GSL (que es C), pero eso viene con una API horrible (aunque los números pueden ser buenos). ¿Hay algo mas?
Una API útil se vería así:
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
es un puntero de función junto con algún puntero de datos opaco, que puede contener su estado. En segundo lugar, existen algunas preocupaciones de eficiencia sobre la (re) asignación de amortiguadores de trabajo arbitrariamente grandes, por lo que esa parte tiene al menos alguna justificación válida.