como o título sugere, estou tentando calcular a integral de uma função compactamente suportada (polinômio quintic de Wendland) em um triângulo. Observe que o centro da função está em algum lugar no espaço 3D. Integro essa função em um triângulo arbitrário, mas pequeno ( ) Atualmente, estou usando a integração descrita por Dunavant, 1985 (p = 19).
Parece, no entanto, que essas regras de quadratura não são adequadas para problemas com suporte compacto. Isso é suportado pelo fato de que, quando integro (uma função que é 1 dentro do círculo do raio 1) em um plano discretizado usando triângulos, meus resultados (normalizados) ficam entre 1.001 e 0.897.
Então, minha pergunta é: existe uma regra de quadratura especializada para esse tipo de problema? Uma regra de integração composta de ordem inferior funcionaria melhor?
Infelizmente, essa rotina é realmente crítica no meu código, portanto a precisão é crucial. Por outro lado, preciso fazer essa integração "algumas vezes" por uma única etapa, para que as despesas computacionais não sejam muito altas. Paralelização não é um problema, pois executarei a própria integração em série.
Agradecemos antecipadamente por suas respostas.
EDIT: O polinômio quintic de Wendland é dado por comα=21 r0R3
EDIT2: Se é o triângulo bidimensional, desejo calcular com . Portanto, em nunca será menor que 0. Observe que a integral é uma integral de superfície sobre uma superfície 2-D em∫ ô ω ( r ) d r ω ( r ) = W ( ‖ r - r 0 ‖qWR3
EDIT3: Eu tenho uma solução analítica para o problema 1-D (linha). Também é possível calcular um para 2-D (triângulo).
fonte
Respostas:
Como a função é suave dentro de , mas não de grau fixo (no plano, isto é), sugiro usar um esquema adaptativo simples, por exemplo, a Regra Trapezoidal com o método de Romberg , em ambas as dimensões.q≤2
Ou seja, se o triângulo é definido pelo vértices , e , e você tem uma rotina que integra ao longo da linha a partir de , você pode fazer o seguinte (em notação Matlab):y z ∈ R 3x y z∈R3
romb(f,a,b)
f
a
b
Em
romb
, não use um número fixo de pontos, mas continue aumentando a tabela até que a diferença entre duas diagonais sucessivas esteja abaixo da tolerância necessária. Como sua função é suave, essa deve ser uma boa estimativa de erro.Se partes do triângulo estão fora do domínio de , você pode tentar ajustar os limites de integração no código acima de acordo.W(q)
Essa pode não ser a maneira mais eficiente em termos computacionais de resolver seu problema, mas a adaptabilidade fornecerá muito mais robustez do que uma regra de grau fixo.
fonte
Para uma boa visão geral das regras de cubatura, consulte "R. Cools, Uma Enciclopédia de Fórmulas de Cubatura J. Complexity, 19: 445-453, 2003". Usando uma regra fixa, você pode obter a vantagem de que algumas regras integram polinômios exatamente (como a quadratura gaussiana faz em uma dimensão).
Cools também é um dos principais autores do CUBPACK , um pacote de software para cubatura numérica.
fonte
As regras de integração assumem que a função é localmente bem aproximada por um polinômio de baixo grau. Seu problema não tem nada a ver com suporte compacto. As funções de base radial compactamente suportadas são suaves no limite do suporte, e regras de quadratura até a ordem da suavidade podem ser usadas sem problemas. (Regras de ordem superior não ajudam; portanto, você provavelmente não deve usar uma regra que integre exatamente os polinômios do grau 5).
No seu caso, a imprecisão deriva do fato de que a suposição de boa aproximação polinomial falha no seu caso para triângulos próximos a , mesmo quando eles não contêm .r 0r0 r0
q q r r → r 0 r rW é suave como uma função de , mas é uma função não suave de , com um gradiente que se torna infinito no limite . A integração ultrapassa , e a função composta é uma função não suave de .q q r r→r0 r r
Se o triângulo não contém , a função é mas isso não ajuda, pois a derivada mais alta cresce muito rapidamente perto de , e o erro de um método de alta ordem é proporcional a uma derivada de alta ordem, portanto, muito grande !C i n f r 0r0 Cinf r0
O remédio simples é dividir cada triângulo T em um número N_T de sub-triângulos. Você pode levar para longe de e para perto de . Você pode descobrir off-line qual o tamanho de para triângulos de um determinado diâmetro e distância de para alcançar a precisão desejada. Além disso, você deve usar apenas fórmulas de ordem baixa perto de .r 0 N T » 1 r 0 N T R 0 R 0NT=1 r0 NT≫1 r0 NT r0 r0
À medida que você integra sobre um triângulo, mas é tridimensional, aparentemente o triângulo está em .R 3r0 R3
Um remédio mais rápido, portanto, tabulará a integral para em função das coordenadas do triângulo (normalizada girando-a em um plano bidimensional, de modo que um vértice esteja no eixo e refletindo-a de modo que um segundo está acima dele). Essa tabulação deve ser suficientemente detalhada para tornar uma interpolação linear ou quadrática precisa o suficiente. Mas você pode usar o método lento descrito primeiro para criar esta tabela.x y xr0=0 xy x
Outra maneira de se livrar do problema é usar uma função de base radial compactamente suportada que é um polinômio em vez de . Isso é suave em qualquer lugar e fácil de integrar. qq2 q
fonte