Numerische Integration eines mehrdimensionalen Integrals mit bekannten Grenzen

12

Ich habe ein (2-dimensionales) falsches Integral

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

wobei die Integrationsdomäne kleiner als , aber weiter eingeschränkt durch . Da und glatt sind undEINx=[-1,1]y=[-1,1]F(x,y)>0FWW0An den Grenzen impliziert die spätere Beziehung, dass der Integrand an den Grenzen singulär sein kann. Der Integrand ist jedoch endlich. Bisher berechne ich dieses Integral mit verschachtelter numerischer Integration. Dies ist erfolgreich, aber langsam. Ich suche eine geeignetere (schnellere) Methode, um das Integral zu adressieren, vielleicht eine Monte-Carlo-Methode. Aber ich brauche einen, der keine Punkte auf die Grenze der nicht-kubischen Domäne A setzt und die Grenze des unkorrekten Integrals richtig nimmt. Kann eine integrale Transformation für diesen allgemeinen Ausdruck hilfreich sein? Beachten Sie, dass ich für als Funktion von lösen und sogar für einige spezielle Gewichtsfunktionen berechnen kann .F(x,y)yxIW(x,y)

highsciguy
quelle
Können Sie etwas genauer sagen, welche Methoden Sie bisher angewendet haben? Welche spezifischen Routinen haben Sie verschachtelt verwendet? Ist innerhalb von , dh liegen die Wurzeln von nur an der Grenze? F(x,y)0AF(x,y)
Pedro
Der GSL-Algorithmus QAGS: gnu.org/software/gsl/manual/html_node/… . Vielen Dank für die Änderungen (die Option zum Setzen von Gleichungen wurde nicht angezeigt)!
Highsciguy

Antworten:

7

Haftungsausschluss: Ich habe meine Doktorarbeit über adaptive Quadratur geschrieben, daher ist diese Antwort stark auf meine eigene Arbeit ausgerichtet.

GSLs QAGS ist der alte QUADPACK- Integrator und nicht ganz robust, insbesondere bei Singularitäten. Dies führt in der Regel dazu, dass Benutzer weitaus mehr Genauigkeitsanforderungen stellen, als sie tatsächlich benötigen, was die Integration sehr teuer macht.

Wenn Sie GSL verwenden, möchten Sie möglicherweise meinen eigenen Code, CQUAD , ausprobieren , der in diesem Dokument beschrieben wird . Es wurde entwickelt, um Singularitäten sowohl an den Intervallkanten als auch innerhalb der Domäne zu bewältigen. Beachten Sie, dass die Fehlerschätzung recht robust ist. Fragen Sie daher nur nach so vielen Ziffern, wie Sie tatsächlich benötigen.

Bei der Monte-Carlo-Integration kommt es darauf an, welche Genauigkeit Sie suchen. Ich bin mir auch nicht ganz sicher, wie gut es in der Nähe von Singularitäten funktionieren wird.

Pedro
quelle
Ich werde mir das auf jeden Fall ansehen, da es am einfachsten zu implementieren ist. Tatsächlich stellte ich fest, dass die QAGS-Routine für dieses Problem nicht überstabil war.
Highsciguy
Gibt es eine Möglichkeit, das Auftreten von 'GSL_EDIVERGE' zu beeinflussen? Es scheint für einige Parameter zu erscheinen.
Highsciguy
@highsciguy: Der Algorithmus gibt GSL_EDIVERGE zurück, wenn er glaubt, dass das Integral nicht endlich ist. Wenn Sie mir ein Beispiel geben könnten, für das es fehlschlägt, könnte ich es mir genauer ansehen.
Pedro
Es ist ein wenig schwierig, eine einfache Routine zu isolieren, da sie in einen generischen Code für n-dimensionale Integrale eingebettet ist. Ich werde sehen ... Aber für festes y sollte sich 1 / sqrt (F (x, y)) wie 1 / sqrt (x) verhalten, wenn x sich den Nullen von F (x, y) nähert, da F (x, y) kann dann als Polynom in x geschrieben werden. Könnte aber sein, dass das 1 / sqrt (x) -Verhalten zu spät einsetzt. Könnte auch sein, dass die numerische Genauigkeit des Integranden nicht zu gut ist.
Highsciguy
1
@highsciguy: Ja, das ist eine schlechte Idee. Die meisten Quadraturregeln setzen voraus, dass der Integrand einen gewissen Grad an Glätte aufweist. Wenn Sie ihn ab einem beliebigen Punkt auf Null setzen, führen Sie eine Diskontinuität ein. Sie erhalten viel bessere Ergebnisse, wenn Sie das tatsächliche Intervall verwenden!
Pedro
5

Monte-Carlo-Methoden können im Allgemeinen nicht mit der adaptiven Quadratur konkurrieren, es sei denn, Sie haben ein hochdimensionales Integral, bei dem Sie sich die kombinatorische Explosion von Quadraturpunkten mit der Dimension nicht leisten können.

Der Grund ist relativ leicht zu verstehen. Nehmen wir zum Beispiel nur [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=830Integrationspunkte, weit mehr als Sie jemals in einem Leben auswerten konnten. Mit anderen Worten, solange Sie genügend Integrationspunkte auswerten können, ist die Quadratur in Unterteilungen Ihrer Integrationsdomäne immer der effizientere Ansatz. In Fällen, in denen Sie ein hochdimensionales Integral haben, für das Sie nicht einmal mehr die Integrationspunkte für eine einzelne Unterteilung auswerten können, verwenden die Benutzer Monte-Carlo-Methoden trotz ihrer schlechteren Konvergenzreihenfolge.

Wolfgang Bangerth
quelle
1

Versuchen Sie es mit einer verschachtelten doppelt exponentiellen Quadratur (siehe Implementierungen von Ooura ). Diese Technik verwendet eine variable Transformation, die bewirkt, dass sich der transformierte Integrand an den Grenzen sehr gleichmäßig verhält und Singularitäten an der Grenze sehr effizient verarbeitet. Auf seiner Website gibt es auch eine sehr gute Referenzliste zur DE-Quadratur.

GertVdE
quelle