Ho la mia piccola subroutine per l'integrazione numerica (quadratura), che è un adattamento C ++ di un programma ALGOL pubblicato da Bulirsch & Stoer nel 1967 (Numerische Mathematik, 9, 271-278).
Vorrei passare a un algoritmo più moderno (adattivo) e chiedermi se ci sono librerie C ++ (gratuite) che forniscono tale. Ho dato uno sguardo a GSL (che è C), ma viene fornito con un'API orribile (anche se i numeri possono essere buoni). C'è niente altro?
Un'API utile sarebbe simile a questa:
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
è un puntatore a funzione insieme ad un puntatore di dati opaco, che può contenere il tuo stato. In secondo luogo, vi sono alcuni problemi di efficienza riguardo alla (ri) allocazione di buffer di lavoro arbitrariamente grandi, in modo che tale parte abbia almeno una valida giustificazione.