Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Quadratura Numérica

LNCC - Laboratório Nacional de Computação Científica

Para calcular as integrais nas matrizes locais, usamos regras de quadratura numérica.

Princípio Geral

Uma regra de quadratura aproxima uma integral por uma soma ponderada:

K^g(x^)dx^q=1nqwqg(x^q)\int_{\hat K} g(\hat{\mathbf{x}}) \, d\hat{\mathbf{x}} \approx \sum_{q=1}^{n_q} w_q g(\hat{\mathbf{x}}_q)

onde:

Quadratura em 1D (Gauss-Legendre)

Para o intervalo [0,1][0, 1], usamos pontos e pesos de Gauss-Legendre transformados.

Gauss-1 (ponto médio)

x^0=12,w0=1\hat x_0 = \frac{1}{2}, \quad w_0 = 1

Exata para polinômios de grau 1\leq 1.

Gauss-2

x^0=1236,x^1=12+36\hat x_0 = \frac{1}{2} - \frac{\sqrt{3}}{6}, \quad \hat x_1 = \frac{1}{2} + \frac{\sqrt{3}}{6}
w0=12,w1=12w_0 = \frac{1}{2}, \quad w_1 = \frac{1}{2}

Exata para polinômios de grau 3\leq 3.

Gauss-3

x^0=121510,x^1=12,x^2=12+1510\hat x_0 = \frac{1}{2} - \frac{\sqrt{15}}{10}, \quad \hat x_1 = \frac{1}{2}, \quad \hat x_2 = \frac{1}{2} + \frac{\sqrt{15}}{10}
w0=518,w1=49,w2=518w_0 = \frac{5}{18}, \quad w_1 = \frac{4}{9}, \quad w_2 = \frac{5}{18}

Exata para polinômios de grau 5\leq 5.

Quadratura em Triângulos

Para o triângulo de referência K^={(x^,y^):x^,y^0,x^+y^1}\hat K = \{(\hat x, \hat y) : \hat x, \hat y \geq 0, \hat x + \hat y \leq 1\}.

Ordem 1 (centroide)

(x^0,y^0)=(13,13),w0=12(\hat x_0, \hat y_0) = \left(\frac{1}{3}, \frac{1}{3}\right), \quad w_0 = \frac{1}{2}

Exata para polinômios de grau 1\leq 1.

Ordem 2 (3 pontos)

(x^i,y^i)=(16,16),(23,16),(16,23)(\hat x_i, \hat y_i) = \left(\frac{1}{6}, \frac{1}{6}\right), \left(\frac{2}{3}, \frac{1}{6}\right), \left(\frac{1}{6}, \frac{2}{3}\right)
wi=16,i=0,1,2w_i = \frac{1}{6}, \quad i = 0, 1, 2

Exata para polinômios de grau 2\leq 2.

Ordem 3 (4 pontos)

(x^0,y^0)=(13,13),w0=932(\hat x_0, \hat y_0) = \left(\frac{1}{3}, \frac{1}{3}\right), \quad w_0 = -\frac{9}{32}
(x^i,y^i)=(15,15),(35,15),(15,35),wi=2596(\hat x_i, \hat y_i) = \left(\frac{1}{5}, \frac{1}{5}\right), \left(\frac{3}{5}, \frac{1}{5}\right), \left(\frac{1}{5}, \frac{3}{5}\right), \quad w_i = \frac{25}{96}

Exata para polinômios de grau 3\leq 3.

Quadratura em Quadriláteros

Para o quadrado de referência K^=[0,1]×[0,1]\hat K = [0, 1] \times [0, 1], usamos produto tensorial de regras 1D.

Gauss 2×2 (4 pontos)

Para Gauss-2 em cada direção:

x^i=12±36,y^j=12±36\hat x_i = \frac{1}{2} \pm \frac{\sqrt{3}}{6}, \quad \hat y_j = \frac{1}{2} \pm \frac{\sqrt{3}}{6}

Pontos:

(x^,y^)ij=(1236,1236),(\hat x, \hat y)_{ij} = \left(\frac{1}{2} - \frac{\sqrt{3}}{6}, \frac{1}{2} - \frac{\sqrt{3}}{6}\right), \ldots

Pesos:

wij=14w_{ij} = \frac{1}{4}

Exata para polinômios de grau 3\leq 3 em cada variável.

Gauss 3×3 (9 pontos)

Para Gauss-3 em cada direção, obtemos 9 pontos. Exata para polinômios de grau 5\leq 5 em cada variável.

Escolha da Ordem de Quadratura

Para integrar corretamente:

Regra prática: Use ordem de quadratura \geq grau do integrando dividido por 2 (arredondado para cima).

Implementação no fempack

O módulo fempack.quadrature fornece:

Exemplo:

from fempack.quadrature import gauss_legendre_interval

points, weights = gauss_legendre_interval(2)  # Gauss-2