Numerische Methoden zum Invertieren integraler Transformationen?


11

Ich versuche, die folgende integrale Transformation numerisch zu invertieren:

F(y)=0yexp[12(y2+x2)]I0(xy)f(x)dx

Für ein gegebenes ich also approximieren, wobei:f ( x )F(y)f(x)

  • f(x) und sind real und positivF(y) (sie sind kontinuierliche Wahrscheinlichkeitsverteilungen)
  • x,y sind real und positiv (sie sind Größen)

Ich habe momentan eine sehr unordentliche und Brute-Force-Methode, um dies zu tun:

Ich definiere und den Spline über eine Reihe von Punkten, die Werte der Spline-Punkte werden durch Zufallsstichprobe "erraten", was ein vorhergesagtes ergibt . Ein grundlegender genetischer Algorithmus, den ich geschrieben habe, minimiert den Unterschied zwischen dem vorhergesagten und dem gemessenen -Array. Ich nehme dann das dem der Algorithmus konvergiert, als meine Antwort für die Inversion.F ( y ) F ( y ) f ( x )f(x)F(y)F(y)f(x)

Dieser Ansatz funktioniert in einigen einfachen Fällen ziemlich gut, fühlt sich für mich jedoch chaotisch und nicht besonders robust an.

Kann mir jemand eine Anleitung geben, wie ich dieses Problem besser lösen kann?

Vielen Dank für Ihre Zeit und Hilfe!

[x-posted at Computerscience]

Antworten:


13

Eine ziemlich einfache Methode wäre, eine Basis im Funktionsraum zu wählen und die integrale Transformation in eine Matrix umzuwandeln. Dann können Sie einfach die Matrix invertieren.

Mathematisch funktioniert das folgendermaßen: Sie benötigen einen Satz orthonormaler Basisfunktionen . (Sie können davonkommen, ohne dass sie auch normalisiert werden, aber es ist einfacher, dies zu erklären.) Orthonormal bedeutet, dass das innere Produkt , woT i , T j= δ i jTi(x)Ti,Tj=δij

(1)Ti,TjabW(x)Ti(x)Tj(x)dx=δij

Hier ist eine Gewichtsfunktion. Das und die Grenzen und hängen von Ihrer Wahl von . Sobald Sie ausgewählt haben, welche Basisfunktionen verwendet werden sollen, können Sie die Grenzwerte und die Gewichtsfunktion in Ihrem Programm fest codieren.a b T iW(x)abTi

Mit der Orthonormalität können Sie jede Funktion wie und als lineare Kombinationen dieser Basisfunktionen ausdrücken :F ( y )f(x)F(y)

(2)f(x)=iciTi(x)F(y)=jCjTj(y)

wobei die Koeffizienten berechnet werden als

(3)ci=f,Ti=abW(x)f(x)Ti(x)dx(4)Cj=F,Tj=abW(y)F(y)Tj(y)dy

Sie können überprüfen, ob diese Ausdrücke mit den Definitionen der Koeffizienten übereinstimmen, Gl. (2) und die Orthonormalität, Gl. (1).

Berechnen Sie nun die Transformation jeder der Basisfunktionen. Nennen wir es .T~i(y)

T~i(y)0yexp[12(y2+x2)]I0(xy)Ti(x)dx

f(x)F(y)T~i(y) ist eine Funktion, und so können Sie sie wie bei und als lineare Kombination der Basisfunktionen ausdrücken :f(x)F(y)

T~i(y)=kAikTk(y)

wobei die Matrixelemente die gleiche Weise bestimmt werden, wie wir und oben gefunden haben: c i C jAikciCj

(5)Aik=T~i,Tk=abW(y)T~i(y)Tk(y)dy

In der Praxis ist dies ein ziemlich icky Doppelintegral, aber Sie müssen es nur einmal (jemals) für jede Kombination von und tun . Sie können die Integrale numerisch ausführen und dann die resultierenden Werte in Ihrem Programm fest codieren. (Randnotiz: Mit einer cleveren Auswahl von und können Sie es möglicherweise so gestalten, dass das Integral symbolisch ausgeführt werden kann. Ob dies möglich ist, hängt von Ihrer Transformation ab. Sie können dies mit dem Fourier tun transformieren, aber ich neige dazu zu glauben, dass es für die Transformation, nach der Sie hier fragen, nicht möglich ist.)k T i ( x ) W ( x )ikTi(x)W(x)

In Bezug auf die Matrixelemente und die Koeffizienten und sich die Beziehung zwischen und auf ein lineares System c i C j f ( x ) F ( y )AikciCjf(x)F(y)

jCjTj(y)F(y)=0yexp[12(y2+x2)]I0(xy)iciTi(x)f(x)dx=ici0yexp[12(y2+x2)]I0(xy)Ti(x)dx=icikAikTk(y)

Aufgrund der Orthogonalität der Basisfunktionen können Sie einen bestimmten Koeffizienten isolieren, indem Sie das innere Produkt beider Seiten mit : T CT

(jCjTj),T=(icikAikTk),TabW(y)jCjTj(y)T(y)dy=abW(y)icijAikTk(y)T(y)dyjCjabW(y)Tj(y)T(y)dy=icikAikabW(y)Tk(y)T(y)dyjCjδj=icikAikδkC=iciAi

Natürlich ist nur ein Dummy-Index, also werde ich ihn wieder .Cj

Dies ist nur ein lineares Algebra-Problem. ist eine Komponente eines Vektors, ebenso wie , und sind Komponenten einer Matrix. Sie können aus der Funktion berechnen, die Sie mit Gl. (3), und Sie kennen aus der einmaligen Berechnung, die Sie für diese bestimmte Integraltransformation durchgeführt haben, Gl. (5), so dass Sie die können, indem Sie eine Matrixmultiplikation durchführen (in der Computer sehr gut sind) und dann die Funktion aus denen rekonstruieren, die Gl. (2).CjciAijciAijCjF(y)

die inverse Transformation , beginnen Sie mit der Funktion und berechnen die daraus mit Gl. (4), und dann müssten Sie das lineare System lösenF(y)Cj

Cj=iciAij

Dies kann durch Multiplizieren beider Seiten mit der Umkehrung der Matrix . In der Praxis gibt es jedoch effizientere Möglichkeiten, dies zu tun. Verwenden Sie den linearen Systemlöser der verfügbaren linearen Algebra-Bibliothek.A

Beachten Sie, dass alles, was ich bisher geschrieben habe, die Grenzen der Summen über , usw. nicht spezifiziert hat. In der Praxis müssen Sie einige Grenzwerte auswählen, z. B. bis (Sie wählen ), sodass jedes Sie stoßen können, durch eine lineare Kombination von ausreichend gut angenähert werden und auch einen Bereich wie bis so dass jedes durch eine lineare Kombination von ausreichend gut angenähert werden kann . Es ist wahrscheinlich am einfachsten, zu wählenij1NNf(x)T1(x),,TN(x)1MF(y)T1(y),,TM(y)M=N. Hier liegt es an Ihnen, was "ausreichend gut" bedeutet. Im Allgemeinen ist Ihre Annäherung umso besser , je größer Sie und machen. Je mehr Speicher (und Zeit) Sie für die Berechnung benötigen. Denken Sie daran , dass Sie müssen zur Berechnung Koeffizienten und für die Matrix müssen Sie haben Koeffizienten berechnet, von bis .MNNciAM×NA11ANM

Für Funktionen, die in einem endlichen Intervall definiert sind und linear auf , sind die Chebyshev-Polynome eine häufige Wahl für . In gewisser Weise erzeugen Chebyshev-Polynome die genaueste Annäherung einer gegebenen Funktion unter Verwendung einer festen Anzahl von Begriffen, was sie für diese Art der Anwendung besonders gut geeignet macht. Wenn Sie die Domäne Ihrer Wahrscheinlichkeitsverteilungen abschneiden können, können Sie diese möglicherweise verwenden. Sie sind mit dem Gewicht und den Grenzen und . (Beachten Sie, dass in der häufig angegebenen Form die Normalisierung so ist, dassT i W ( x ) = 1[1,1]Ti a=-1b=1Ti,Tj=δijπ/2i=j0T0,T0=πW(x)=11x2a=1b=1Ti,Tj=δijπ/2für und , müssen Sie dies möglicherweise in Ihrem Code berücksichtigen.)i=j0T0,T0=π

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.