Tengo el siguiente problema:integración numérica con C++ sobre una malla dada con discretización constante fija
Mi C++ código puede calcular dos funciones
f1 (i1, i2, i3, i4)
f2 (j1, j2)
para cada conjunto de {i1, i2, i3, i4} obtengo un valor de f1 y para cada conjunto de {j1, j2} obtengo un valor de f2.
los conjuntos {i1, i2, i3, i4} y {j1, j2} se dan en una malla FIJA con algún paso de discretización constante "h".
necesito para calcular, en lenguaje matemático, un F3 Integral (x1, x3) = Integral [f1 (x1, x2, x3, x4) * f2 (x3, x4) dx4 dx3]
El la la suma simple no es lo suficientemente buena, ya que f2 tiene muchos saltos.
¿Hay alguna biblioteca C++ que pueda hacer este tipo de integración? O alguna algorhithm que es fácil de implementar (no soy muy bueno en C++)
muchas gracias
asumí que conozco los saltos en f2 y supuse que f1 es lo suficientemente suave. ¿Qué puedo hacer en ese caso? – Sankp
Quiero decir, si, por ejemplo, sus funciones son analíticas en regiones, si son funciones de paso, splines, polinomios, etc. Entonces puede hacer integrales exactas en esas regiones y sumar las regiones.¿Conoces la forma exacta de f2 con mayor precisión que el binning? Entonces, ¿por qué no puedes evaluar las funciones en ubicaciones arbitrarias para la integración? ¿Tardan mucho tiempo o obtienen las funciones de algún otro lugar en forma tabulada? También eche un vistazo a la respuesta de @ElKamina. Necesitaría una versión 2d, como esta http://math.fullerton.edu/mathews/n2003/simpsonsrule2dmod.html –
Para Monte Carlo, mire las vEGAS y MISER las buenas subrutinas fortran. Quizás pueda encontrarlos en www.netlib.org, o como versiones C en el libro Numerical Recipes. Pueden ayudar a hacer frente al hecho de que f2 no es regular. –