Integrazione numerica di integrali multidimensionali con confini noti


12

Ho un integrale (bidimensionale) improprio

I=AW(x,y)F(x,y)dxdy

dove il dominio di integrazione è minore di , ma ulteriormente limitato da . Poiché e sono uniformi eAy = [ - 1 , 1 ] F ( x , y ) > 0 F W W 0 F ( x , y ) y x I W ( x , y )x=[1,1]y=[1,1]F(x,y)>0FWW0ai confini, la relazione successiva implica che l'integrando può essere singolare ai confini. L'integrando è finito però. Finora ho calcolato questo integrale con integrazione numerica annidata. Questo ha successo ma è lento. Cerco un metodo più appropriato (più veloce) per indirizzare l'integrale, forse un metodo Monte-Carlo. Ma ne ho bisogno di uno che non metta punti sul confine del dominio non cubico A e prenda correttamente il limite dell'integrale improprio. Una trasformazione integrale può aiutare questa espressione generale? Nota che posso risolvereF(x,y)per in funzione di e persino calcolare per alcune funzioni di peso speciali .yxIW(x,y)


Puoi essere un po 'più specifico su quali metodi hai usato finora? Quali routine specifiche hai usato in modo annidato? Inoltre, all'interno di , cioè le radici di solo sul confine? A F ( x , y )F(x,y)0AF(x,y)
Pedro,

L'algoritmo GSL QAGS: gnu.org/software/gsl/manual/html_node/… . Grazie per le modifiche (non ho visto l'opzione per comporre equazioni)!
highsciguy,

Risposte:


7

Disclaimer: ho scritto la mia tesi di dottorato sulla quadratura adattativa, quindi questa risposta sarà fortemente distorta verso il mio lavoro.

Il QAGS di GSL è il vecchio integratore QUADPACK e non è del tutto robusto, soprattutto in presenza di singolarità. Questo di solito porta gli utenti a richiedere cifre molto più precise di quelle di cui hanno effettivamente bisogno, rendendo l'integrazione piuttosto costosa.

Se stai usando GSL, potresti provare il mio codice, CQUAD , descritto in questo documento . È progettato per far fronte alle singolarità, sia ai bordi degli intervalli che all'interno del dominio. Tieni presente che la stima dell'errore è piuttosto solida, quindi chiedi solo il numero di cifre effettivamente richiesto.

Per quanto riguarda l'integrazione Monte-Carlo, dipende dal tipo di precisione che stai cercando. Inoltre non sono del tutto sicuro di come funzionerà vicino alle singolarità.


Lo guarderò sicuramente perché sarà molto semplice implementarlo. In effetti, ho sperimentato che la routine QAGS non era super stabile per questo problema.
highsciguy,

C'è un modo per influenzare il verificarsi di "GSL_EDIVERGE"? Sembra apparire per alcuni parametri.
highsciguy,

@highsciguy: l'algoritmo restituisce GSL_EDIVERGE quando ritiene che l'integrale non sia finito. Se potessi darmi un esempio per il quale fallisce, potrei dare un'occhiata più da vicino.
Pedro,

È un po 'difficile isolare una routine semplice, poiché è incorporato in un codice generico per integrali n-dimensinali. Vedrò ... Ma per y fisso, 1 / sqrt (F (x, y)) dovrebbe comportarsi come 1 / sqrt (x) mentre x si avvicina agli zeri di F (x, y) poiché F (x, y) può quindi essere scritto come un polinomio in x. Ma potrebbe essere che il comportamento 1 / sqrt (x) inizi in ritardo. Potrebbe anche essere che la precarica numerica dell'integrando non sia troppo buona.
highsciguy,

1
@highsciguy: Sì, questa è una cattiva idea. La maggior parte delle regole di quadratura presuppone che l'integrando abbia un certo grado di scorrevolezza e, se lo si imposta su zero da un punto arbitrario, si sta introducendo una discontinuità. Otterrai risultati molto migliori se usi l'intervallo effettivo!
Pedro,

5

I metodi Monte Carlo in generale non possono competere con la quadratura adattativa a meno che tu non abbia un integrale dimensionale elevato in cui non puoi permetterti l'esplosione combinatoria di punti di quadratura con la dimensione.

[0,1]nf(x)dnxnMMnkN=(kM)nk(2k1)e=O(h5)=O(M(2k1))

e=O(N(2k1)/n).
e=O(N1/2)
k>n/4+1/2

k8n=30M=1N=830punti di integrazione, molto più di quanto tu possa mai valutare in una vita. In altre parole, fintanto che è possibile valutare un numero sufficiente di punti di integrazione, la quadratura su suddivisioni del proprio dominio di integrazione è sempre l'approccio più efficiente. Sono i casi in cui hai un integrale dimensionale elevato per il quale non puoi più valutare i punti di integrazione anche su una singola suddivisione che le persone usano i metodi Monte Carlo nonostante il loro peggior ordine di convergenza.


1

Prova una quadratura a doppia esponenziale nidificata (vedi le implementazioni di Ooura ). Questa tecnica utilizza una trasformazione variabile che fa sì che l'integrando trasformato si comporti in modo molto fluido ai confini ed è molto efficiente per gestire le singolarità al limite. C'è anche un ottimo elenco di riferimenti sulla quadratura DE sul suo sito web.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.