J'ai mon propre petit sous-programme d'intégration numérique (quadrature), qui est une adaptation en C ++ d'un programme ALGOL publié par Bulirsch & Stoer en 1967 (Numerische Mathematik, 9, 271-278).
Je voudrais passer à un algorithme plus moderne (adaptatif) et me demander s'il existe des bibliothèques C ++ (gratuites) qui en fournissent. J'avais un look GSL (qui est C), mais cela vient avec une horrible API (bien que les chiffres soient bons). Y a-t-il autre chose?
Une API utile ressemblerait à ceci:
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
est un pointeur de fonction avec un pointeur de données opaque, qui peut contenir votre état. Deuxièmement, il y a des problèmes d'efficacité concernant la (ré) allocation de tampons de travail de taille arbitraire, de sorte qu'une partie a au moins une justification valable.