Ho il seguente problema:integrazione numerica con C++ su un dato maglia con discretizzazione costante fisso
mio codice C++ può calcolare due funzioni
f1 (i1, i2, i3, i4)
f2 (j1, j2)
per ogni set di {i1, i2, i3, i4} Ottengo un valore di f1 e per ogni set di {j1, j2} ottengo un valore di f2.
i set {i1, i2, i3, i4} e {j1, j2} sono dati su una mesh FISSA con un passo di discretizzazione costante "h".
Ho bisogno di calcolare, in linguaggio matematico, una F3 integrale (x1, x3) = Integrale [f1 (x1, x2, x3, x4) * f2 (x3, x4) dx3 dx4]
Il la la semplice sommatoria non è abbastanza buona, dato che f2 ha molti salti.
C'è qualche libreria C++ che può fare questo tipo di integrazione? O qualche algorhithm che è facile da implementare (Io non sono veramente bene su C++)
molte grazie
presupposto conosco i salti su f2 e presuppongo che f1 sia abbastanza regolare. cosa posso fare in questo caso? – Sankp
Intendevo, se ad esempio le vostre funzioni sono analitiche nelle regioni, se sono funzioni di step, spline, polinomio, ecc. Quindi potete eseguire integrali esatti in quelle regioni e sommare le regioni.Conoscete la forma esatta di f2 con maggiore accuratezza rispetto al binning? Allora perché non puoi valutare le funzioni in posizioni arbitrarie per l'integrazione? Sono estremamente dispendiosi in termini di tempo o si ottengono le funzioni da qualche altra parte in una forma tabulata? Dai anche un'occhiata alla risposta di @ElKamina. Avresti bisogno di una versione 2d, come questa http://math.fullerton.edu/mathews/n2003/simpsonsrule2dmod.html –
Per Monte Carlo, guarda le subroutine fortran di VEGAS e MISER. Li puoi trovare su www.netlib.org, o come versioni di C nel libro di Ricette numeriche. Possono aiutare a far fronte al fatto che f2 non è regolare. –