Biblioteca de integración numérica de C++

¿Alguien conoce una biblioteca C ++ para la integración numérica de muestras (puntos de datos (x, y)), como scipy integrate.simps? Sé que no es difícil de implementar por mí mismo (de hecho, ya lo hice), pero necesito hacer esto con mucha frecuencia para grandes conjuntos de datos, por eso estoy buscando una implementación de biblioteca quizás más rápida. Ya revisé boost y gsl, ¡pero no encontré nada!

gracias y saludos

¿Por qué es importante para usted que la biblioteca esté en C++? ¿No puede usar cualquier biblioteca (es decir, una biblioteca compartida .so o .dll)? Tal vez esta sea también la razón por la que no ha encontrado uno, esto no parece algo particularmente específico del idioma.
Por supuesto, cualquier biblioteca está bien, siempre que sea compatible con mi código.
¿Qué hay de hacer su código compatible con una biblioteca?
:-) .. también está bien, pero como escribí a continuación, escribir una función de interpolación para obtener una función continua no ayuda, ya que ralentizaría el cálculo. Por lo tanto, estoy buscando una biblioteca, función, que pueda manejar una matriz, un vector, lo que sea, ¡con un número fijo de puntos!

Respuestas (1)

Debe considerar la GNU Scientific Library (GSL), relativamente popular , que por cierto es lo que GCC usa internamente (aunque no la parte de integración numérica).

Tiene una sección manual bastante larga sobre integración numérica, que describe:

  • Integración de Gauss-Kronrod no adaptativa QNG
  • Integración adaptativa QAG
    • con singularidades
    • con puntos singulares conocidos
    • en intervalos infinitos:
    • para valores principales de Cauchy:
    • para funciones singulares
  • integración adaptativa
    • para funciones oscilatorias
    • para integrales de Fourier
  • Integración CQUAD doblemente adaptativa
  • Integración Gauss-Legendre de orden fijo

Y la mayoría/todos estos parecen estar basados ​​en muestras (en lugar de integrarse usando alguna representación simbólica).

Está escrito en C, pero parece que estás dispuesto a aceptarlo.

Además, Wikipedia tiene una larga lista de bibliotecas numéricas en varios idiomas , incluidos C y C++. No tengo mucha experiencia con el trabajo numérico en C o C ++ (solo un poco en MatLab), por lo que no he probado ninguno, pero debería hacerlo.

Si lo hace, considere responder su propia pregunta e informar qué bibliotecas se ajustan a sus requisitos (básicamente) y cuáles ha elegido.

Gracias por su sugerencia, pero según tengo entendido, todos los algoritmos de integración numérica GSL necesitan una función (const gsl_function * f) como entrada. Por supuesto, podría interpolar mis puntos de datos para obtener una función continua, pero esto incluso ralentizaría mis cálculos. Ninguno de estos algoritmos acepta una matriz o vector de puntos discretos como entrada.