Numerische Wiederherstellung des Imaginärteils der analytischen Fortsetzung vom Realteil


11

Meine Situation.

Ich habe eine Funktion einer komplexen Variablen die durch ein kompliziertes Integral definiert ist. Was mich interessiert, ist der Wert dieser Funktion auf der imaginären Achse. Ich habe numerischen Zugriff auf diese Funktion auf dem folgenden Band: z = ( x , y ) ( - , ) × [ - 1 , 1 ] . Formal ist der integrale Ausdruck außerhalb dieses Bereichs unterschiedlich, und deshalb brauche ich eine analytische Fortsetzung. Um meine Situation in einem Bild zusammenzufassen,f(z)z=(x,y)(,)×[1,1]

Geben Sie hier die Bildbeschreibung ein

Folgendes weiß ich über auf diesem Band aus numerischen Zahlen:f(z)

  1. Es ist gleichzeitig symmetrisch um die imaginäre und die reale Achse.

  2. Es zerfällt auf Null bei .Re(z)

  3. Es explodiert in der Nähe von . Es könnte ein Pol oder ein Verzweigungspunkt sein, ich weiß es nicht. Ich vermute, dass die Art dieser Singularität (und möglicherweise aller anderen isolierten Singularitäten der analytischen Fortsetzung) von der spezifischen Parametrisierung ξ dieser Funktion abhängt (Einzelheiten siehe Integral unten).z=±iξ

Tatsächlich sieht es beim einem sech 2 ( z ) oder einem 1 / ( 1 + z 2 ) 2 n sehr ähnlich . Hier ist eine Handlung des Realteils:sech2(z)1/(1+z2)2n

Geben Sie hier die Bildbeschreibung ein

Meine Frage ist, ob ich angesichts der Menge an Informationen, die ich über die Funktion habe (vollständiger numerischer Zugriff auf diese Funktion in diesem Menüband), eine Möglichkeit habe, eine Annäherung an diese Funktion entlang der imaginären Achse numerisch zu berechnen. Ich benutze übrigens Mathematica.

Der Grund, warum ich mich für die Werte entlang der imaginären Achse interessiere, ist, dass ich die folgende Fourier-Transformation dieser Funktion bewerten muss:

(1)f¯(t)=dxeitx1x2+x02f(x)

t10


Was ich versucht habe.

  1. Ich habe tatsächlich versucht, das ultimative hochschwingende Integral zu berechnen, Gl. (1). Auswertung von Gl. (1) Für einen einzelnen Wert von 't' dauert die Berechnung einige Stunden. Ich habe bereits einige dieser Integrale durchgeführt und die Ergebnisse sind tatsächlich sinnvoll, aber ich möchte einen alternativen Ansatz.

  2. sech2(z)z

  3. Ich habe versucht, symbolische Integration ohne Erfolg. Ich habe versucht, den Integranden für Mathematica in eine besser verdauliche Form zu bringen, aber meine Versuche waren nicht erfolgreich.


Das beleidigende Integral.

k4kξαEz

p12=(k4+12E)2+k2+α2p22=(k412E)2+k2+(1α)2

Das Integral, an dem ich interessiert bin, ist das Folgende:

f(E;α,ξ)=dk40d(k2)[α(1+p12)3ξ/2(1+p22)ξ/2(1+p12(1+p12)2ξ)(1+p22(1+p22)2ξ)++(p1p2)]

ξ=1,2,30<α<1t 10


R+0.99if¯ff

1
f¯

f¯f¯α[1,2]0.1

Ich habe es geschrieben, aber ich habe ein Problem mit meinem Code entdeckt, sodass ich nicht mehr sicher bin, ob das, was ich berechnet habe, überhaupt gültig ist. Haben Sie bekanntermaßen gültige Referenzwerte?
Kirill

Antworten:


5

Hinweis: Ich bin an dieser Stelle etwas besorgt, dass die Integralwerte, die Mathematica mir gibt, falsch sind. Ich dachte, es funktioniert, weil es in kurzer Zeit ein vernünftig aussehendes Ergebnis liefert, aber es kann sein, dass die Methode, die es zu verwenden versucht, fehlerhaft ist oder dass ich etwas falsch gemacht habe. Es könnte also sein, dass der folgende Code überhaupt nicht funktioniert, ich weiß nicht, sorry.

Anmerkung 2: Es hat mich gestört, also habe ich eine andere Version ( Code hier , Entschuldigung für die Codequalität) mit Julia und GSL geschrieben und sie wird gin 2 Sekunden auf dieselbe Antwort ausgewertet , die Mathematica unten gibt. Ich denke, der Code ist wahrscheinlich in Ordnung.

ff¯

Meine bisherigen Erfahrungen mit der numerischen Integration lassen mich glauben, dass die ausgefalleneren mathematischen Methoden manchmal spektakulär hilfreich sein können, aber auch, dass die Bewertung numerischer Fourier-Transformationen und die Integration rationaler und algebraischer Funktionen das A und O numerischer Integrationsalgorithmen sind, so dass dies häufig der Fall ist Machen Sie einfache Fortschritte, indem Sie Algorithmen sorgfältig auswählen und mit ihren Parametern spielen. Dies ist normalerweise die einfachere Option, wenn es schwierig ist zu sehen, wie die mathematische Technik richtig funktioniert.

ClearAll[ξ, α, p1, p2, fi, f, g];
ξ = 1;
α = 1/2;
fi[e_, k4_, kp_] := Module[{
   p1 = (k4^2 + e/2)^2 + kp^2 + α^2,
   p2 = (k4^2 - e/2)^2 + kp^2 + (1 - α)^2},
  2 * (* because integrate k4 over (0,∞) *)
   2 kp * (* because d(kp^2) *)
   (α (1 + p1)^(3 ξ/2) (1 + p2)^(ξ/2)) /
     ((1 + p1 (1 + p1)^(2 ξ)) (1 + p2 (1 + p2)^(2 ξ)))
  ]
f[e_?NumericQ] := NIntegrate[
   fi[e, k4, kp], {k4, 0, ∞}, {kp, 0, ∞},
   Method -> {Automatic, "SymbolicProcessing" -> 0}];

(* !!! This gives a bogus result: *)
gBogus[t_?NumericQ, e0_?NumericQ] := 
 NIntegrate[
  Exp[I t e]/(e^2 + e0^2) f[e], {e, -∞, ∞}, 
  Method -> {"DoubleExponentialOscillatory", 
    "SymbolicProcessing" -> 0}]

(* This gives *a* result, different from above despite being equivalent *)
g[t_?NumericQ, e0_?NumericQ] := 
 NIntegrate[Exp[I t e]/(e^2 + e0^2) f[e], {e, -\[Infinity], 0}, 
   Method -> {"DoubleExponentialOscillatory", 
     "SymbolicProcessing" -> 0},
   EvaluationMonitor :> Print["e=", e]] +
  NIntegrate[Exp[I t e]/(e^2 + e0^2) f[e], {e, 0, \[Infinity]}, 
   Method -> {"DoubleExponentialOscillatory", 
     "SymbolicProcessing" -> 0},
   EvaluationMonitor :> Print["e=", e]]

Ergebnis:

In[18]:= Timing@g[10,1]
Out[18]= {78.0828, 0.0000704303 + 9.78009*10^-6 I}

In[338]:= Timing@g[1,1]
Out[338]= {14.3125,0.389542 +0.024758 I}

Ich habe Mathematica dazu gebracht, keine Zeit damit zu verbringen, die Integranden symbolisch vorzuverarbeiten, weil es in diesem Fall sowieso nichts Nützliches herausgefunden hätte. Ich sagte ihm auch, dass er speziell eine oszillatorische Quadraturmethode für das zweite Integral verwenden soll.

Meine Vermutung dafür , warum mit Integrationsstrategien (siehe zufällig Hantieren NIntegrateIntegrationStrategies ) funktioniert überhaupt ist , dass manchmal Mathematica versehentlich eine schlechte Strategie automatisch holen könnte, Leistung zu töten, während alles , was ich darum bitten zu tun , zumindest ein wenig sinnvoll , auch wenn suboptimal. Sie können sich auch unter /mathematica/ um Hilfe bemühen . Dort erfahren Sie möglicherweise mehr über die Interna von Mathematica.


k40g[t,e0]

fEp1p2EEk42×(0,)

p1p2Ep1,2k4

@ArturodonJuan Ich denke, es macht keinen wirklichen Unterschied, wie die Antwort funktioniert, nur die Zahlen würden sich ändern.
Kirill
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.