Quais são essas oscilações?

8

Eu tenho uma função definida numericamente que está entre um gaussiano e um lorentziano. Decai muito mais devagar que um gaussiano, mas ainda mais rápido que um simples poder inverso.g(x)

insira a descrição da imagem aqui

f(t)F[g(x)](t)tg(x)g(x)gint(x)x40<x<40

f(t)=cos(tx)g(x)dxLLcos(tx)gint(x)dx

No entanto, quando calculo uma aproximação à transformada de Fourier, recebo algumas oscilações ímpares que eu não esperaria inicialmente.

insira a descrição da imagem aqui

Como indiquei na figura acima, as oscilações têm um "período" de cerca de 15,7. Meu primeiro palpite seria que esse poderia ser um artefato de natureza alternada do cancelamento da integral, mas que não explicaria o "período" observado de 15,7.

Tguess=2πL0.157

que é exatamente um fator de 100 diferente do que observo (sim, verifiquei se defini corretamente minhas integrais e eixos horizontais). Como isso poderia ser?


Edição # 1: Detalhes da interpolação

Interpolationndg(x)40<x<40dx=40/100=0.4

De fato, agora que escrevi isso, percebo que poderia muito bem ser um artefato da minha amostra finita, porque:

Tguess #2=2πdx=2π0.4=15.7

Gostaria muito de receber mais ajuda sobre isso, em particular uma boa maneira de superar esse problema.


g(x)

h[x_?NumericQ, En_?NumericQ, pz_?NumericQ] := 
 1./(En^2 + pz^2 + 0.24^2)*
  NIntegrate[((Sqrt[
      0.316/(1. + 
         1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1.*0.316/(1. + 
         1.2*((k4 - 0.5*En)^2 + kp + ((1. - x)*pz)^2))^1.])*((1. - 
         x)*0.316/(1. + 1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1. + 
      x*0.316/(1. + 
         1.2*((k4 - 0.5*En)^2 + kp + ((1. - x)*pz)^2))^1.))/(((k4 + 
        0.5*En)^2 + 
      kp + (x*pz)^2 + (0.316/(1. + 
         1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1.)^2)*((k4 - 
        0.5*En)^2 + 
      kp + ((1. - x)*
        pz)^2 + (0.316/(1. + 
         1.2*((k4 - 0.5*En)^2 + 
            kp + ((1. - x)*
              pz)^2))^1.)^2)), {k4, -\[Infinity], \[Infinity]}, {kp, 
    0, \[Infinity]}, Method -> "LocalAdaptive", 
   MaxRecursion -> 
    100]; (*LocalAdaptive seems to work slightly faster *)

g[x_]:=h[0.5,x,2.]; (*this is the function*)
Arturo don Juan
fonte
Que tipo de interpolação você está usando? Na verdade, não é a função mais fácil interpolar com precisão em um domínio tão grande.
Anton Menshov
@AntonMenshov Veja minha edição mais recente.
Arturo don Juan
4
Quero ressaltar que todo método de integração numérica essencialmente constrói um interpolante de sua função e integra exatamente isso; portanto, interpolando a função primeiro, você está substituindo Integratea construção adaptativa de interpolantes (e todo o pensamento que foi introduzido em sua função). design) com você mesmo, o que provavelmente é uma má ideia.
Kirill
2
glogg(x)[L,L]Module[{n=32,L=10},Exp[InterpolatingPolynomial[Table[{x,Log[g[x]]},{x,-L Cos[(π N@Range[1,2n-1,2])/(2n)]}],x]]]
1
Também acho que ajudaria a compilar o integrando ( gist.github.com/ikirill/931dbf6fb3581f7d66353b74c4743cd3 ), independentemente de todos os problemas mais difíceis aqui, ele o acelera por um fator de ~ 8 para mim.
Kirill

Respostas:

5

LL

Lcos(tx)g(x)dx=1tsin(tx)g(x)|LLsintxtg(x)dx=1Lg(L)sin(tL)+asymptotically smaller terms.
gg

g(L)g(L)

Kirill
fonte