Integração numérica de integral multidimensional com limites conhecidos


12

Eu tenho uma integral incorreta (bidimensional)

I=AW(x,y)F(x,y)dxdy

onde o domínio de integração é menor que , mas ainda mais restrito por . Como e são suaves ex = [ - 1 , 1 ] y = [ - 1 , 1 ] F ( x , y ) > 0 F W W 0 F ( x , y ) y x I W ( x , y )Ax=[1,1]y=[1,1]F(x,y)>0FWW0nas fronteiras, a relação posterior implica que o integrando pode ser singular nas fronteiras. O integrando é finito embora. Até agora, computo essa integral com integração numérica aninhada. Isso é bem sucedido, mas lento. Eu procuro um método mais apropriado (mais rápido) para abordar a integral, talvez um método de Monte-Carlo. Mas preciso de um que não coloque pontos no limite do domínio não cúbico A e aceite corretamente o limite da integral incorreta. Uma transformação Integral pode ajudar nessa expressão geral? Observe que eu posso resolver para como uma função de e até calcular para algumas funções especiais de peso .F(x,y)yxIW(x,y)


Você pode ser um pouco mais específico sobre quais métodos você usou até agora? Quais rotinas específicas você usou de maneira aninhada? Além disso, dentro de , ou seja, as raízes de apenas no limite? A F ( x , y )F(x,y)0AF(x,y)
Pedro

O algoritmo GSL QAGS: gnu.org/software/gsl/manual/html_node/… . Obrigado pelas edições (não vi a opção de digitar equações)!
highsciguy

Respostas:


7

Isenção de responsabilidade: escrevi minha tese de doutorado em quadratura adaptativa, de modo que essa resposta será severamente tendenciosa em relação ao meu próprio trabalho.

O QAGS da GSL é o antigo integrador QUADPACK e não é totalmente robusto, especialmente na presença de singularidades. Isso geralmente leva os usuários a solicitarem muito mais dígitos do que o necessário, tornando a integração muito cara.

Se você estiver usando GSL, poderá tentar meu próprio código, CQUAD , descrito neste documento . Ele foi projetado para lidar com singularidades, nas bordas do intervalo e dentro do domínio. Observe que a estimativa de erro é bastante robusta; portanto, peça apenas quantos dígitos você realmente precisar.

No que diz respeito à integração Monte-Carlo, isso depende do tipo de precisão que você está procurando. Também não tenho certeza de quão bem ele funcionará perto de singularidades.


Definitivamente vou dar uma olhada nisso, porque será mais simples implementá-lo. De fato, experimentei que a rotina do QAGS não era superestável para esse problema.
highsciguy

Existe uma maneira de influenciar a ocorrência de 'GSL_EDIVERGE'? Parece aparecer para alguns parâmetros.
highsciguy

@highsciguy: O algoritmo retorna GSL_EDIVERGE quando acredita que a integral não é finita. Se você pudesse me dar um exemplo para o qual ele falha, eu poderia dar uma olhada mais de perto.
Pedro

É um pouco difícil isolar uma rotina simples, pois é incorporada em um código genérico para integrais n-dimensinais. Vou ver ... Mas, para y fixo, 1 / sqrt (F (x, y)) deve se comportar como 1 / sqrt (x), pois x se aproxima dos zeros de F (x, y) desde F (x, y) pode então ser escrito como um polinômio em x. Mas pode ser que o comportamento 1 / sqrt (x) comece tarde. Também pode ser que a precissão numérica do integrando não seja muito boa.
highsciguy

1
@highsciguy: Sim, isso é uma péssima ideia. A maioria das regras de quadratura supõe que o integrando tenha algum grau de suavidade e, se você o definir como zero em algum ponto arbitrário, estará apresentando uma descontinuidade. Você obterá resultados muito melhores se usar o intervalo real!
Pedro

5

Em geral, os métodos de Monte Carlo não podem competir com a quadratura adaptativa, a menos que você tenha uma integral dimensional alta, onde você não pode permitir a explosão combinatória de pontos de quadratura com a dimensão.

O motivo é relativamente fácil de entender. Tomemos, por exemplo, apenas onde é a dimensão do problema. Digamos, por simplicidade, que você subdivide todas as dimensões em subintervalos , ou seja, obtém células hipercubo no total. Vamos supor ainda que você use uma fórmula de Gauss com pontos de Gauss, apenas como exemplo. Então você tem pontos em quadratura no total e, como os pontos Gauss fornecem a precisão da ordem , , sua precisão geral em função dos pontos de avaliação será [0,1]nf(x)dnxnMMnkN=(kM)nk(2k1)e=O(h5)=O(M(2k1))

e=O(N(2k1)/n).
Por outro lado, os métodos de Monte Carlo geralmente apenas fornecem convergência de erros como pior do que para qualquer fórmula de Gauss com pelo menos pontos por intervalo. O motivo é relativamente simples de entender: a quadratura de Gauss escolhe os pontos de interpolação de algum modo inteligente, Monte Carlo não. Você não pode esperar que algo útil venha deste último. (É claro que existem situações em que a quadratura gaussiana é difícil: por exemplo, no caso em que o domínio de integração é de forma irregular; mas nesse caso é provável que você ainda esteja melhor fazendo integração adaptativa ou similar.)k > n / 4 + 1 / 2
e=O(N1/2)
k>n/4+1/2

Agora, existem problemas práticos (de estabilidade) com integração com mais de, digamos, 8 ou 10 pontos por intervalo. Então, se você quer , não pode ir além de . Por outro lado, nesse caso, mesmo escolher um único intervalo por direção ( ) produz pontos de integração, muito mais do que você jamais poderia avaliar na vida. Em outras palavras, desde que você possa avaliar pontos de integração suficientes, a quadratura nas subdivisões do seu domínio de integração é sempre a abordagem mais eficiente. É nos casos em que você tem uma integral dimensional alta para a qual não é mais possível avaliar os pontos de integração em uma única subdivisão que as pessoas usam os métodos de Monte Carlo, apesar de sua pior ordem de convergência.n = 30 M = 1 N = 8 30k8n=30M=1N=830


1

Tente uma quadratura dupla exponencial aninhada (consulte as implementações de Ooura ). Essa técnica usa uma transformação variável que faz com que o integrando transformado se comporte de maneira muito suave nos limites e é muito eficiente para lidar com singularidades nos limites. Há também uma lista muito boa de referências na quadratura da DE no site dele.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.