Recupero numerico della parte immaginaria della continuazione analitica dalla parte reale


11

La mia situazione.

Ho una funzione di una variabile complessa definita attraverso un integrale complicato. Quello che mi interessa è il valore di questa funzione sull'asse immaginario. Ho accesso numerico a questa funzione sulla seguente barra multifunzione: z = ( x , y ) ( - , ) × [ - 1 , 1 ] . Formalmente l'espressione integrale è divergente al di fuori di questo dominio, e quindi ho bisogno di una continuazione analitica. Per riassumere la mia situazione in una foto,f(z)z=(x,y)(,)×[1,1]

inserisci qui la descrizione dell'immagine

Ecco cosa so di su questo nastro dai numeri:f(z)

  1. È contemporaneamente simmetrico rispetto agli assi immaginari e reali.

  2. Si riduce a zero in .Re(z)

  3. Esplode vicino a . Potrebbe essere un palo o un punto di diramazione, non lo so. Sospetto che la natura di questa singolarità (ed eventualmente tutte le altre singolarità isolate del prolungamento analitico) dipende dalla specifica parametrizzazione ξ di questa funzione (vedi integrale sotto per i dettagli)z=±iξ

In effetti sembra molto simile a un o 1 / ( 1 + z 2 ) 2 n quando viene tracciato. Ecco una trama della parte reale:sech2(z)1/(1+z2)2n

inserisci qui la descrizione dell'immagine

La mia domanda è, data la mera quantità di informazioni che ho sulla funzione (accesso numerico totale ad essa su quel nastro), c'è un modo per me di calcolare numericamente un'approssimazione a questa funzione lungo l'asse immaginario? Sto usando Mathematica a proposito.

Il motivo per cui sono interessato ai valori lungo l'asse immaginario è perché devo valutare la seguente trasformata di Fourier di questa funzione:

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

t10


Quello che ho provato.

  1. In realtà ho provato a calcolare l'ultimo integrale altamente oscillatorio, eq. (1). Eq di valutazione (1) per un singolo valore di 't' sono necessarie alcune ore per il calcolo. Ho già eseguito alcuni di questi integrali e i risultati hanno effettivamente senso, ma vorrei un approccio alternativo.

  2. sech2(z)z

  3. Ho provato senza successo l'integrazione simbolica. Ho provato a massaggiare l'integrando in una forma più digeribile per Mathematica, ma i miei tentativi non sono riusciti.


L'integrale offensivo.

k4kξαEz

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

L'integrale che mi interessa è il seguente:

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

L'ho scritto, ma ho scoperto un problema con il mio codice, quindi non sono più sicuro che ciò che ho calcolato sia del tutto valido. Hai valori di riferimento validi noti?
Kirill,

Risposte:


5

Nota: sono un po 'preoccupato a questo punto che i valori integrali che Mathematica mi dà sono falsi. Ho pensato che funzionasse perché ha dato un risultato di aspetto ragionevole in breve tempo, ma potrebbe essere il caso che il metodo che tenta di utilizzare sia difettoso o che abbia fatto qualcosa di sbagliato. Quindi potrebbe essere che il codice qui sotto non funzioni affatto, non lo so, scusa.

Nota 2: Mi ha infastidito, quindi ho scritto un'altra versione ( codice qui , scusate per la qualità del codice) usando Julia e GSL, e valuta gin 2 secondi la stessa risposta che Mathematica dà di seguito. Quindi penso che il codice sia probabilmente a posto.

ff¯

La mia esperienza passata con l'integrazione numerica mi porta a credere che i metodi matematici più elaborati possano talvolta essere straordinariamente utili, ma anche che la valutazione delle trasformazioni numeriche di Fourier e l'integrazione delle funzioni razionali e algebriche sono il pane degli algoritmi di integrazione numerica, quindi si può spesso fare facili progressi selezionando gli algoritmi attentamente e giocando con i loro parametri. Questa è di solito l'opzione più semplice se è difficile capire come far funzionare correttamente la tecnica matematica.

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]]

Risultato:

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}

Ho fatto perdere a Mathematica il tempo zero per preelaborare simbolicamente gli integrandi, perché in questo caso non sarebbe comunque riuscito a capire nulla di utile al riguardo. Gli ho anche detto di usare specificamente un metodo di quadratura oscillatoria per il secondo integrale.

La mia ipotesi sul perché armeggiare casualmente con le strategie di integrazione (vedi NIntegrateIntegrationStrategies ) funziona affatto che a volte Mathematica potrebbe accidentalmente scegliere automaticamente una cattiva strategia, uccidendo le prestazioni, mentre tutto ciò che le chiedo di fare è almeno un po 'significativo anche se non ottimale. Potresti anche prendere in considerazione la possibilità di ricevere aiuto su /mathematica/ , potrebbero sapere di più sugli interni di Mathematica laggiù.


k40g[t,e0]

fEp1p2EEk42×(0,)

p1p2Ep1,2k4

@ArturodonJuan Penso che non faccia alcuna differenza per come funziona la risposta, cambieranno solo i numeri.
Kirill,
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.