Minha situação.
Eu tenho uma função de uma variável complexa definida através de uma integral complicada. O que me interessa é o valor dessa função no eixo imaginário. Eu tenho acesso numérico a esta função na seguinte faixa de opções : z = ( x , y ) ∈ ( - ∞ , ∞ ) × [ - 1 , 1 ] . Formalmente, a expressão integral é divergente fora desse domínio e, portanto, preciso de uma continuação analítica. Para resumir minha situação em uma imagem,
Aqui está o que eu sei sobre nesta faixa de opções numéricos:
É simultaneamente simétrico em relação aos eixos imaginários e reais.
Decai para zero em .
Explode perto de . Poderia ser um poste ou um ponto de ramificação, não sei. Suspeito que a natureza dessa singularidade (e possivelmente todas as outras singularidades isoladas da continuação analítica) dependa da parametrização específica ξ dessa função (consulte a íntegra abaixo para obter detalhes)
De fato, parece muito semelhante a um ou 1 / ( 1 + z 2 ) 2 n quando plotado. Aqui está um gráfico da parte real:
Minha pergunta é, dada a enorme quantidade de informações que tenho sobre a função (acesso numérico total a ela nessa faixa de opções), existe alguma maneira de calcular numericamente uma aproximação a essa função ao longo do eixo imaginário? Estou usando o Mathematica por sinal.
O motivo pelo qual estou interessado nos valores ao longo do eixo imaginário é porque preciso avaliar a seguinte transformação de Fourier dessa função:
para grandes valores de , que no meu caso estão na ordem de 10 . Embora eu conheça bem o integrando, essa transformação de Fourier é tremendamente oscilatória; portanto, a única outra maneira de saber como calcular isso é através de uma integração do Contour.
O que eu tentei.
Na verdade, tentei calcular a integral máxima altamente oscilatória, eq. (1) Avaliando a eq. (1) para um valor único de 't' leva algumas horas para calcular. Já realizei algumas dessas integrais e os resultados realmente fazem sentido, mas eu gostaria de uma abordagem alternativa.
Tentei continuar analiticamente com as aproximações de Pade, mas isso também é computacionalmente caro, mas não tanto quanto a avaliação direta. Mais importante, eu não consegui estabelecer convergência com a ordem crescente das aproximações (nem a média de suas somas parciais!), O que contrasta com o modo como meus testes com funções simples como foram (eu poderia facilmente obter muito rápido convergência em amplas faixas do complexo plano z com funções de teste simples).
Eu tentei a integração simbólica sem sucesso. Eu tentei massagear o integrando em uma forma mais digerível para o Mathematica, mas minhas tentativas não foram bem-sucedidas.
A integral ofensiva.
Seja , k ⊥ , ξ e α sejam números reais positivos enquanto E é o número complexo em que estamos interessados (desempenha o papel de z na discussão anterior). Definir:
A integral que me interessa é a seguinte:
fonte
Respostas:
Nota: Estou um pouco preocupado neste momento em que os valores integrais que o Mathematica me fornece são falsos. Eu pensei que estava funcionando porque deu um resultado sensato em pouco tempo, mas pode ser que o método que ele tenta usar seja de buggy ou que eu fiz algo errado. Portanto, pode ser que o código abaixo não esteja funcionando, não sei, desculpe.
Nota 2: Isso me incomodou, então escrevi outra versão ( código aqui , desculpe pela qualidade do código) usando Julia e GSL, e avalia
g
em 2 segundos a mesma resposta que o Mathematica dá abaixo. Então eu acho que o código provavelmente está bom.Minha experiência no passado com integração numérica me leva a acreditar que os métodos matemáticos mais sofisticados às vezes podem ser espetacularmente úteis, mas também que avaliar transformações numéricas de Fourier e integrar funções racionais e algébricas são a base dos algoritmos de integração numérica, portanto é possível faça um progresso fácil escolhendo algoritmos com cuidado e jogando com seus parâmetros. Geralmente, essa é a opção mais fácil se for difícil ver como fazer a técnica matemática funcionar corretamente.
Resultado:
Eu fiz o Mathematica gastar tempo zero no pré-processamento simbólico dos integrandos, porque, nesse caso, ele não teria conseguido descobrir nada útil sobre ele. Eu também disse para usar especificamente um método de quadratura oscilatória para a segunda integral.
Meu palpite por que mexer aleatoriamente com estratégias de integração (ver NIntegrateIntegrationStrategies ) trabalha em tudo é que às vezes Mathematica pode acidentalmente pegar uma má estratégia automaticamente, matando desempenho, ao passo que qualquer coisa que eu pedi-lo a fazer é, pelo menos, um pouco mesmo significado se abaixo do ideal. Você também pode obter ajuda em /mathematica/ , pois eles podem saber mais sobre os internos do Mathematica por lá.
fonte
g[t,e0]