Formalismo de Keldysh


F. P. Marín
><
Menu

Apéndice A. Utilidades

Ver

NIST HandBook of Mathematical Functions.
Eds. by F. W. Olmer, D. W. Lozier, R. F. Boisvert and C. W. Clark.
Cambridge University Press 2010.

Los recuadros verdes$\,$, en las tablas a continuación, indican la convención para las Transformadas de Fourier que se usan en estas notas. Ello refleja la convención usual en Mecánica Cuántica: Por ejemplo; la función de onda $\ds{\propto \expo{\ic\pars{kx - \omega t}} \propto \expo{-\ic\omega t}}$, en una dimensión, describe una partícula con momento lineal $\ds{\hbar k\,\hat{x}}$ y energía $\ds{\hbar\omega}$.

Note que usamos, por simplicidad, la notación ${\rm g}\pars{\omega}$ o/y ${\rm G}\pars{\omega,\omega'}$, en frecuencias $\omega$'s o/y $\omega'$'s, para la transformada de Fourier de ${\rm g}\pars{t}$ o/y ${\rm G}\pars{t,t'}$ mientras la notación usual en la literatura es $\hat{\rm g}\pars{\omega}$ o $\wt{\rm g}\pars{\omega}$ $\pars{~\mbox{o/y}\ \hat{\rm G}\pars{\omega,\omega'}\ \mbox{o}\ \wt{\rm G}\pars{\omega,\omega'}~}$ a la cual podríamos recurrir eventualmente si se presentare alguna ambiguedad.

$\ds{\Phi\pars{t} = \int_{-\infty}^{\infty}\Phi\pars{\omega}\expo{-\ic\omega t}\, {\dd\omega \over 2\pi}}$ $\ds{\Phi\pars{\omega} = \int_{-\infty}^{\infty}\Phi\pars{t}\expo{\ic\omega t}\, \dd t}$
$\ds{-\ic\Theta\pars{t}}$ $\ds{1 \over \omega + \ic 0^{+}}$
$\ds{-\ic\Theta\pars{t}\expo{-\ic Et}}$ $\ds{1 \over \omega - E + \ic 0^{+}}$
$\ds{\ic\Theta\pars{-t}}$ $\ds{1 \over \omega - \ic 0^{+}}$
$\ds{\ic\Theta\pars{-t}\expo{-\ic Et}}$ $\ds{1 \over \omega - E - \ic 0^{+}}$
$\ds{-\ic\Theta\pars{t}\phi\pars{t}}$ $\ds{\int_{-\infty}^{\infty} {\phi\pars{\omega'} \over \omega - \omega' + \ic 0^{+}}\, {\dd\omega' \over 2\pi\ic}}$
$\ds{\ic\Theta\pars{-t}\phi\pars{t}}$ $\ds{\int_{-\infty}^{\infty} {\phi\pars{\omega'} \over \omega - \omega' - \ic 0^{+}}\, {\dd\omega' \over 2\pi\ic}}$
$\ds{-\ic\Theta\pars{t}{\rm A}\pars{-t}{\rm B}\pars{t}}$ $\ds{\int_{-\infty}^{\infty}\int_{-\infty}^{\infty} {{\rm A}\pars{\omega'}{\rm B}\pars{\omega''} \over \omega + \omega' - \omega'' + \ic 0^{+}} \,{\dd\omega'\,\dd\omega'' \over \pars{2\pi}^{2}}}$

$\ds{\Phi\pars{t,t'} = \int_{-\infty}^{\infty}\!\!\int_{-\infty}^{\infty}\!\!\!\!\! \Phi\pars{\omega,\omega'} \expo{-\ic\pars{\omega t - \omega't'}}\, {\dd\omega\,\dd\omega' \over \pars{2\pi}^{2}}}$ $\ds{\Phi\pars{\omega,\omega'} = \int_{-\infty}^{\infty}\!\!\int_{-\infty}^{\infty}\!\!\!\!\! \Phi\pars{t,t'}\expo{\ic\pars{\omega t - \omega't'}}\, \dd t\,\dd t'}$
$\ds{\Phi\pars{t - t'}}$ $\ds{2\pi\,\delta\pars{\omega - \omega'} \Phi\pars{\omega}}$
$\ds{-\ic\Theta\pars{t - t'}\varphi\pars{t,t'}}$ $\ds{\int_{-\infty}^{\infty}{% \varphi\pars{\omega - \omega'',\omega' - \omega''} \over \omega'' + \ic 0^{+}}\,{\dd\omega'' \over 2\pi}}$
$\ds{\ic\Theta\pars{t' - t}\varphi\pars{t,t'}}$ $\ds{\int_{-\infty}^{\infty}{% \varphi\pars{\omega - \omega'',\omega' - \omega''} \over \omega'' - \ic 0^{+}}\,{\dd\omega'' \over 2\pi}}$
$\ds{\int_{-\infty}^{\infty}\varphi\pars{t,t''} \phi\pars{t'',t'}\,\dd t''}$ $\ds{\int_{-\infty}^{\infty} \varphi\pars{\omega,\omega''}\phi\pars{\omega'',\omega'} \,{\dd\omega'' \over 2\pi}}$
$\ds{\int_{-\infty}^{\infty}\varphi\pars{t - t''} \phi\pars{t'',t'}\,\dd t''}$ $\ds{\varphi\pars{\omega}\phi\pars{\omega,\omega'}}$
$\ds{\int_{-\infty}^{\infty}\varphi\pars{t - t''} \phi\pars{t'' - t'}\,\dd t''}$ $\ds{2\pi\,\delta\pars{\omega - \omega'}\varphi\pars{\omega} \phi\pars{\omega}}$
$\ds{\varphi\pars{t - t'}\phi\pars{t,t'}}$ $\ds{\int_{-\infty}^{\infty} \varphi\pars{\omega''} \phi\pars{\omega - \omega'',\omega' - \omega''} \,{\dd\omega'' \over 2\pi}}$

PolyGammas: Expansiones Asintóticas

La Función Gamma $\Gamma:{\mathbb C}\backslash\braces{0,-1,-2,-3,\ldots} \to {\mathbb C}$ posee el siguiente comportamiento asintótico:

\begin{align} \ln\pars{\Gamma\pars{z}} & \sim \pars{z-\half}\ln\pars{z} - z + \half\ln\pars{2\pi} + {1 \over 12z} - {1 \over 360z^{3}} + {1 \over 1260z^{5}} + \cdots \label{ealngz} \\[3mm] & \verts{z} \to \infty\,,\quad\verts{\arg\pars{z}} < \pi \nonumber \end{align}
Usando la Fórmula de Duplicación
$$ \Gamma\pars{2z} = \pi^{-1/2}2^{2z - 1}\,\Gamma\pars{z}\Gamma\pars{\half + z} $$
se puede reescribir $\ln\pars{\Gamma\pars{1/2 + z}}$ en la forma siguiente: $$ \ln\pars{\Gamma\pars{\half +z}} = \half\ln\pars{\pi} + \pars{1-2z}\ln\pars{2} + \ln\pars{\Gamma\pars{2z}} - \ln\pars{\Gamma\pars{z}} $$ Reemplazando la expansión asintótica \eqref{ealngz}: \begin{eqnarray*} \ln\pars{\Gamma\pars{\half + z}} & = & \half\ln\pars{\pi} + \pars{1-2z}\ln\pars{2} \\ && + \bracks{\pars{2z - \half}\ln\pars{2z} - 2z + \half\,\ln\pars{2\pi} + {1 \over 24z} - {1 \over 2880z^{3}} + {1 \over 40320z^{5}} + \cdots} \\&& - \bracks{\pars{z - \half}\ln\pars{z} - z + \half\,\ln\pars{2\pi} + {1 \over 12z} - {1 \over 360z^{3}} + {1 \over 1260z^{5}} + \cdots} \end{eqnarray*} se obtiene
\begin{align} \ln\pars{\Gamma\pars{\half + z}} & \sim z\ln\pars{z} - z + \half\,\ln\pars{2\pi} - {1 \over 24z} + {7 \over 2880z^{3}} - {31 \over 40320z^{5}} + \cdots \end{align}
Las funciones Trigamma $\Psi'$, Tetragamma $\Psi''$, etc$\ldots$ ( en general, PolyGammas ) se definen como derivadas de la función Digamma $\Psi$: $$ \Psi\pars{z} \equiv \totald{\ln\pars{\Gamma\pars{z}}}{z} $$

Resumiendo:

\begin{align} \ln\pars{\Gamma\pars{z}} & \sim \pars{z-\half}\ln z - z + \half\ln\pars{2\pi} + \frac{1}{12z} - \frac{1}{360z^{3}} + {1 \over 1260z^{5}} + \cdots \\[3mm] \ln\pars{\Gamma\pars{\half + z}} & \sim z\ln\pars{z} - z + \half\,\ln\pars{2\pi} - {1 \over 24z} + {7 \over 2880z^{3}} - {31 \over 40320z^{5}} + \cdots \end{align}
\begin{align} \Psi\pars{z} & \sim \ln\pars{z} - {1 \over 2z} - {1 \over 12z^{2}} + {1 \over 120z^{4}} - {1 \over 252z^{6}} + \cdots \\[3mm] \Psi\pars{\half + z} & \sim \ln\pars{z} + {1 \over 24z^{2}} - {7 \over 960z^{4}} + {31 \over 8064z^{6}} + \cdots \end{align}
\begin{align} \Psi'\pars{z} & \sim {1 \over z} + {1 \over 2z^{2}} + {1 \over 6z^{3}} - {1 \over 30z^{5}} + {1 \over 42z^{7}} + \cdots \\[3mm] \Psi'\pars{\half + z} & \sim {1 \over z} - {1 \over 12z^{3}} + {7 \over 240z^{5}} - {31 \over 1344z^{7}} + \cdots \end{align}
\begin{align} \Psi''\pars{z} & \sim -\,{1 \over z^{2}} - {1 \over z^{3}} - {1 \over 2z^{4}} + {1 \over 6z^{6}} - {1 \over 6z^{8}} + \cdots \\[3mm] \Psi''\pars{\half + z} & \sim -\,{1 \over z^{2}} + {1 \over 4z^{4}} - {7 \over 48z^{6}} + {31 \over 192z^{8}} + \cdots \end{align}
\begin{align} \Psi'''\pars{z} & \sim {2 \over z^{3}} + {3 \over z^{4}} + {2 \over z^{5}} - {1 \over z^{7}} + {4 \over 3z^{9}} + \cdots \\[3mm] \Psi'''\pars{\half + z} & \sim {2 \over z^{3}} - {1 \over z^{5}} + {7 \over 8z^{7}} - {31 \over 24z^{9}} + \cdots \end{align}
\begin{align} \Psi^{\pars{\tt IV}}\pars{z} & \sim -\,{6 \over z^{4}} - {12 \over z^{5}} - {10 \over z^{6}} + {7 \over z^{8}} - {12 \over z^{10}} + \cdots \\[3mm] \Psi^{\pars{\tt IV}}\pars{\half + z} & \sim -\,{6 \over z^{4}} + {5 \over z^{6}} - {49 \over 8z^{8}} + {93 \over 8z^{10}} + \cdots \end{align}
${\large\tt\mbox{etc}\ldots}$

Otros Resultados

Con $\Im\pars{E} < 0$, ${\rm W} \gg \verts{E}$ y ${\rm W} \gg \kb T$: \begin{equation} \int_{\rm -W}^{\rm W}{\fermi\pars{\omega} \over \omega - E} \sim -\,{\pi \over 2}\,\ic + \ln\pars{2\pi\kb T \over {\rm W}} + \Psi\pars{\half + {E \over 2\pi\kb T}\,\ic} \label{intome} \end{equation}
donde $\ds{\fermi\pars{\omega} \equiv {1 \over \expo{\beta\omega} + 1}}$ es la Función de Distribución de Fermi-Dirac. $\ds{\beta \equiv {1 \over \kb T}}$. $\ds{T > 0}$ es la temperatura absoluta y $\Psi\pars{z}$ es la Función Digamma.
Con el resultado \eqref{intome} se obtiene $$ \quad\fermi\pars{\varepsilon,\Gamma} \equiv \int_{-\infty}^{\infty}{\Gamma/\pi \over \pars{\omega - \varepsilon}^{2} + \Gamma^{2}}\,\fermi\pars{\omega}\, \dd\omega = \half - {1 \over \pi}\, \Im\Psi\pars{\half + {\Gamma + \varepsilon\ic \over 2\pi\kb T}}\quad $$ donde $\ds{\quad\varepsilon \in {\mathbb R}\,,\quad\Gamma > 0 \quad\mbox{y}\quad-\,{\pi \over 2} < \Im\Psi\pars{\half + {\Gamma + \varepsilon\ic \over 2\pi\kb T}} < {\pi \over 2}}$.
Algunas propiedades interesantes $\pars{~\mbox{con}\ \Gamma > 0~}$ son: Al derivar estas propiedades hemos usado, en algunos casos, las expansiones asintóticas de las funciones polyGammas, enumeradas arriba, y $\Psi\,'\pars{1/2} = \pi^{2}/2 \approx 4.9348$.

Ejemplos Simples de Funciones de Green

El primer ejemplo ( deliberadamente extenso ), aunque extremadamente simple, muestra la motivación general para introducir el Método de las Funciones de Green: Convertir una ecuación diferencial en una expresión integral o, en un caso mas general, en una ecuación integral.

La analogía con Álgebra Lineal es particularmente util.

Programas en C++

El programa siguiente, en C++, genera la data de las figuras

${\cal P}_{\rm s}\pars{t}\ \mbox{vs.}\ \omega_{\vec{p}}$
y
${\cal P}_{\rm m^{*}}\pars{t}\ \mbox{vs.}\ \omega_{\vec{p}}$
en la sección Ecuaciones de Kadanoff-Baym. Ejemplo: Bosones.

// ps_pm_0.cc F. P. Marin fpmaring@gmail.com 09-mar-2016
// Compilacion: g++ ps_pm_0.cc -o ps_pm_0.out -lm -Wall -W
//   Ejecucion: ./ps_pm_0.out
#include <cmath>
#include <fstream>
#include <iostream>
#include <stdexcept>
using namespace std;
const char *ARCH[] = {"ps.dat","pm.dat"};
const double DW = 0.01,E = 1.0;
const double MAXW = 2.0 + DW,MINW = 0;
const double PAR[] = {0.1,0.2,0.3,1.0};
const size_t NPAR = sizeof(PAR)/sizeof(*PAR);
double Pt(double w,double e,double g);

inline int errorArchivo(const char *arch)
{
 cerr<<"\nError al abrir archivo "<<arch<<endl;
 return 0;
}

inline double Gamma_s(double w,double as) { return as*w*w; }

inline double Gamma_m(double w,double am)
{
      if (w > 0) return am*sqrt(w);
 else if (w < 0) throw range_error("Argumento w no puede ser negativo");
 else            return 0;
}

int main()
{
 ofstream ps(ARCH[0]);
 if (!ps.is_open()) return errorArchivo(ARCH[0]);
 
 ofstream pm(ARCH[1]);
 if (!pm.is_open()) {
    ps.close();
    return errorArchivo(ARCH[1]);
 }  

 double w = MINW;
 do {
     ps<<w;
     pm<<w;

     for ( size_t i = 0 ; i < NPAR ; ++i ) {
         try {
              ps<<' '<<Pt(w,E,Gamma_s(w,PAR[i]));
              pm<<' '<<Pt(w,E,Gamma_m(w,PAR[i]));
         } catch(const range_error &re) {
                pm.close(),ps.close();
                cerr<<endl<<re.what()<<endl;
                return 0;
         } catch(...) {
                pm.close(),ps.close();
                cerr<<"\nErrorDesconocido\n";
                return 0;
         }
     }

     ps<<endl;
     pm<<endl;
 } while ((w += DW) < MAXW);
 
 pm.close();
 ps.close();
 
 return 0;
}

double lor(double w,double g) // Lorentziana
{
        if ((w = abs(w)) < abs(g)) {
           w /= g;
           w = (1.0/g)/(w*w + 1.0);
 } else if (w > 0) {
           g /= w;
           w = (g/w)/(1.0 + g*g);
 } else throw range_error("Division por cero");

 return w/M_PI;
}

double Pt(double w,double e,double g)
{
 static double res;

 try { res = lor(w - e,g); } catch(range_error) { throw; }

 return res;
}
El programa siguiente, en C++, genera la data de la figura al final de la sección Ecuaciones de Kadanoff-Baym. Ejemplo: Bosones.
// sBose_0.cc F. P. Marin fpmaring@gmail.com 14-mar-2016
// Compilacion: g++ sBose_0.cc -o sBose_0.out -lm -Wall -W
//   Ejecucion: ./sBose_0.out
/* Cuadratura Gauss-Laguerre: http://dlmf.nist.gov/3.5.T9 */
#include <cfloat>
#include <cmath>
#include <complex>
#include <fstream>
#include <iostream>
#include <stdexcept>
using namespace std;
typedef complex<double> Complejo;
const char *ARCHIVO = "sBose_0.dat";
const Complejo I(0,1.0);
const double DE = 0.00001,T = 1.0;
const double MAXE = 10.0 + DE,MINE = 0,T3 = T*T*T;
const double XK[] = {0.1377934705404049231,0.729454549503170498,
                     1.80834290174031605,3.40143369785489951,
                     5.55249614006380363,8.33015274676449670,
                     11.8437858379000656,16.2792578313781021,
                     21.9965858119807620,29.9206970122738916};
const double WK[] = {0.308441115765020141,0.401119929155273552,
                     0.218068287611809422,0.0620874560986777475,
                     0.950151697518110055E-2,0.753008388587538775E-3,
                     0.282592334959956557E-4,0.424931398496268637E-6,
                     0.183956482397963078E-8,0.991182721960900856E-12};
const size_t NPUNTOS = sizeof(XK)/sizeof(*XK);
double f(double e);
Complejo f(double e,double x,double alphaS = 0.1);

int main()
{
 if (NPUNTOS != (sizeof(WK)/sizeof(*WK))) {
    cerr<<<"\nError en Cuadratura Gauss-Laguerre\n";
    return 0;
 } 
 ofstream sB(ARCHIVO);
 if (!sB.is_open()) {
    cerr<<"\nError al abrir archivo "<<ARCHIVO<<endl;
    return 0;
 }

 for ( double e = MINE ; e < MAXE ; e += DE ) {
     try { sB<<e<<' '<<f(e)<<endl; }
     catch(const range_error &re) {
          sB.close();
          cerr<<endl<<re.what()<<endl;
          return 0;
     }
     catch(...) {
          sB.close();
          cerr<<"\nError desconocido\n";
          return 0;
     }
 }
 
 sB.close();
 return 0;
}

double bose(double x)
{
 static const double minX0 = 0.95*log(DBL_EPSILON);
 static const double minX1 = minX0/3.0;

 if (x > 0)     return -1.0 - bose(-x);
 if (x < minX0) return -1.0;
 if (x < minX1) {
    x = exp(x);
    return -1.0 - x*(1.0 - x);
 }
 if (x < 0) return 1.0/(exp(x) - 1.0);
 throw range_error("Distribucion de Bose no esta definida en x = 0");
}

double f(double e)
{
 static Complejo res;
 static size_t i;

 res = 0;
 for ( i = 0 ; i < NPUNTOS ; ++i ) {
     try { res += WK[i]*f(e,XK[i]); } catch(range_error) { throw; }
 }
 res *= T3;

 return res.real();
}

Complejo f(double e,double x,double alphaS)
{
 static const double alphaSPorT = alphaS*T;
 static Complejo den;
 static double temp;

 try { temp = 1.0 + bose(x); } catch(range_error) { throw; }
 den = T*(alphaSPorT*x - I)*x + e*I;
 return x*x*temp/den;
}
// gotaC_0.cc F. P. Marin fpmaring@gmail.com 17-mar-2016
// Compilacion: g++ gotaC_0.cc -o gotaC_0.out -lm -Wall -W
//   Ejecucion: ./gotaC_0.out > gotaC_0.dat
#include <cmath>
#include <iostream>
#include <stdexcept>
using namespace std;

class GotaC
{
      private:
              double delta,gamma,n0,omega;
              static double lor(double w,double g); // Lorentziana
      public:
             GotaC(double d = 1.0,double g = 0.1,double nt0 = 0,
                  double w = 1.0);

             double operator ()(double t) const;
};
              
double GotaC::lor(double w,double g)
{
        if ((w = abs(w)) < abs(g)) {
           w /= g;
           w = (1.0/g)/(w*w + 1.0);
 } else if (w > 0) {
           g /= w;
           w = (g/w)/(1.0 + g*g);
 } else throw range_error("Division por cero");

 return w/M_PI;
}

inline GotaC::GotaC(double d,double g,double nt0,double w)
{
 (delta = d),(gamma = g),(n0 = nt0),(omega = w);
}

double GotaC::operator ()(double t) const
{
 static double exp_gt,temp;

 try { temp = lor(omega,gamma); } catch(range_error) { throw; }

 exp_gt = exp(-gamma*t);
 return n0*exp_gt*exp_gt +
        delta*temp*((exp_gt - 2.0*cos(omega*t))*exp_gt + 1.0);
}

int main()
{
 const double dt = 0.1,maxT = 40.1;
 GotaC n;

 for ( double t = 0 ; t < maxT ; t += dt ) {
     try { cout<<t<<' '<<n(t)<<endl; }
     catch(const range_error &re) {
          cerr<<endl<<re.what()<<endl;
          return 0;
     }
     catch(...) {
          cerr<<"\nError desconocido\n";
          return 0;
     }
 }

 return 0;
}
Menu