Recuperación numérica de la parte imaginaria de la continuación analítica de la parte real

11

Mi situación.

Tengo una función de una variable compleja definida a través de una integral complicada. Lo que me interesa es el valor de esta función en el eje imaginario. Tengo acceso numérico a esta función en la siguiente cinta: z = ( x , y ) ( - , ) × [ - 1 , 1 ] . Formalmente, la expresión integral es divergente fuera de este dominio y, por lo tanto, necesito una continuación analítica. Para resumir mi situación en una imagen,f(z)z=(x,y)(,)×[1,1]

ingrese la descripción de la imagen aquí

Esto es lo que sé sobre en esta cinta de números:f(z)

  1. Simultáneamente es simétrico sobre los ejes imaginario y real.

  2. Se desintegra a cero en .Re(z)

  3. Explota cerca de . Podría ser un poste o un punto de ramificación, no lo sé. Sospecho que la naturaleza de esta singularidad (y posiblemente todas las demás singularidades aisladas de la continuación analítica) depende de la parametrización específica ξ de esta función (ver integral a continuación para más detalles)z=±iξ

De hecho, se ve muy similar a un o un 1 / ( 1 + z 2 ) 2 n cuando se traza. Aquí hay una trama de la parte real:sech2(z)1/(1+z2)2n

ingrese la descripción de la imagen aquí

Mi pregunta es, dada la gran cantidad de información que tengo sobre la función (acceso numérico total a ella en esa cinta), ¿hay alguna forma de calcular numéricamente una aproximación a esta función a lo largo del eje imaginario? Estoy usando Mathematica por cierto.

La razón por la que estoy interesado en los valores a lo largo del eje imaginario es porque necesito evaluar la siguiente transformada de Fourier de esta función:

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

t10


Lo que he intentado.

  1. De hecho, he intentado calcular la máxima integral altamente oscilatoria, eq. (1) Evaluar la ecuación (1) para un solo valor de 't' toma algunas horas calcular. Ya he llevado a cabo algunas de estas integrales y los resultados realmente tienen sentido, pero me gustaría un enfoque alternativo.

  2. sech2(z)z

  3. He intentado la integración simbólica en vano. He intentado masajear el integrando en una forma más digerible para Mathematica, pero mis intentos no han tenido éxito.


La integral ofensiva.

k4kξαEz

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

La integral que me interesa es la siguiente:

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

Arturo don Juan
fuente
R+0.99if¯ff
1
f¯
f¯f¯α[1,2]0.1
Lo escribí, pero descubrí un problema con mi código, por lo que ya no estoy seguro de si lo que calculé es válido. ¿Tiene algún valor de referencia válido conocido?
Kirill

Respuestas:

5

Nota: Estoy un poco preocupado en este punto porque los valores integrales que me da Mathematica son falsos. Pensé que estaba funcionando porque dio un resultado de apariencia sensata en poco tiempo, pero podría ser el caso de que el método que intenta usar sea defectuoso o que hice algo mal. Por lo tanto, es posible que el siguiente código no funcione, no sé, lo siento.

Nota 2: Me molestó, así que escribí otra versión ( código aquí , perdón por la calidad del código) usando Julia y GSL, y evalúa gen 2 segundos la misma respuesta que Mathematica da a continuación. Entonces creo que el código probablemente esté bien.

ff¯

Mi experiencia pasada con la integración numérica me lleva a creer que los métodos matemáticos más sofisticados a veces pueden ser espectacularmente útiles, pero también que evaluar las transformadas numéricas de Fourier e integrar funciones racionales y algebraicas son la base de los algoritmos de integración numérica, por lo que a menudo se puede avance fácilmente seleccionando algoritmos cuidadosamente y jugando con sus parámetros. Esta suele ser la opción más fácil si es difícil ver cómo hacer que la técnica matemática funcione correctamente.

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

Resultado:

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}

Hice que Mathematica pasara cero tiempo preprocesando simbólicamente los integrandos, porque en este caso no habría sido capaz de descubrir nada útil al respecto de todos modos. También le dije que usara específicamente un método de cuadratura oscilatoria para la segunda integral.

Mi conjetura por qué tocar el violín al azar con las estrategias de integración (véase NIntegrateIntegrationStrategies ) funciona en absoluto es que a veces Mathematica podría recoger accidentalmente una mala estrategia de forma automática, matando el rendimiento, mientras que nada te pido que hacer es al menos un poco, incluso significativo si subóptima. También podría considerar obtener ayuda en /mathematica/ , pueden conocer más sobre las partes internas de Mathematica allí.

Kirill
fuente
k40g[t,e0]
fEp1p2EEk42×(0,)
p1p2Ep1,2k4
@ArturodonJuan Creo que no hay una diferencia real en cómo funciona la respuesta, solo cambiarían los números.
Kirill