Obtenção da Fórmula

A fórmula de Gauss para o cálculo de integral numérica ou quadratura gaussiana, como é mais conhecida, é uma fórmula que fornece um resultado bem mais preciso que os métodos anteriores com o mesmo número de pontos.

Na aplicacação da quadratura gaussiana, os pontos não são mais escolhidos pela pessoa que utiliza o método, mas seguem um critério bem definido.

Partindo o problema de se determinar:

\[ I = \int_{a}^{b}{f(x)}dx\]

Inicialmente, é alterado o intervalo de integração, passado de \([a, b]\) para \([-1, 1]\). Isto é feito através de troca de variável:

\[x = \frac{1}{2}(b-a)t + \frac{1}{2}(b+a)\] \[f(x) = f\left[\frac{1}{2}(b-a)t + \frac{1}{2}(b+a) \right] \] \[I = \int_{a}^{b}{f(x)}dx = \int_{-1}^{1}{F(t)}dt\]

Resultando:

A fórmula de Gauss fornece valores exatos para a integração de polinômios de grau \((2n -1)\), onde \(n\) é o número de pontos.

Para dois pontos, a fórmula de Gauss é:

\[I = \int_{-1}^{1}{F(t)}dt = A_1F(t_1) +A_2F(t_2) \]

Onde \(A_1\), \(A_2\), \(t_1\) e \(t_2\) são incógnitas a se determinar e independentes da Função \(F\) escolhida.

Para determinar estas quatros incógnitas são necessárias quatro equações que podem ser obtidas ao se considerar \(F(t)\) = \(t^k\), \(k = 0,1,2,3\). Então:

\[\int_{-1}^{1}{t^k}dt = A_1F(t_1^k) +A_2F(t_2^k)\]

Para:

\[ k = 0 \Rightarrow \int_{-1}^{1}{t^0}dt = A_1F(t_1^0) +A_2F(t_2^0) \] \[ k = 1 \Rightarrow \int_{-1}^{1}{t^1}dt = A_1F(t_1^1) +A_2F(t_2^1)\] \[ k = 2 \Rightarrow \int_{-1}^{1}{t^2}dt = A_1F(t_1^2) +A_2F(t_2^2)\] \[ k = 3 \Rightarrow \int_{-1}^{1}{t^3}dt = A_1F(t_1^3) +A_2F(t_2^3)\]

Ou ainda:

\[\left\{ \begin{matrix} 2 & A_1 + A_2 \\ 0 & A_1t_1 + A_2t_2 \\ {2}/{3} & A_1t_1^2 + A_2t_2^2 \\ 0 & A_1t_1^3 + A_2t_2^3 \\ \end{matrix} \right.\]

Resolvendo o sistema temos:

\[A_1=A_2 = 1\] \[t_1 = -t_2 = \frac{1}{\sqrt{3}}\]

Substituindo os valores encontrados, tem-se a fórmula de Gauss para dois pontos:

\[I_G = F(-\frac{1}{\sqrt{3}}) + F(\frac{1}{\sqrt{3}})\]

Como os valores de \(A_i\) e \(t_i\) são fixos, os valores para outras quantidades de pontos está disponível na tabela abaixo até \(n=5\):

Número de Pontos \(t_i\) \(A_i\)
1 \(0\) \(2\)
2 \( \pm {\frac {1}{\sqrt {3}}} \) \(1\)
3 \(0\) \({\frac {8}{9}} \)
\(\pm {\sqrt {\frac {3}{5}}} \) \({\frac {5}{9}} \)
4 \(\pm {\sqrt {{\frac {3}{7}}-{\frac {2}{7}}{\sqrt {\frac {6}{5}}}}} \) \({\frac {18+{\sqrt {30}}}{36}} \)
\(\pm {\sqrt {{\frac {3}{7}}+{\frac {2}{7}}{\sqrt {\frac {6}{5}}}}} \) \(\frac {18-{\sqrt {30}}}{36} \)
5 \(0\) \({\frac {128}{225}} \)
\(\pm {\frac {1}{3}}{\sqrt {5-2{\sqrt {\frac {10}{7}}}}} \) \({\frac {322+13{\sqrt {70}}}{900}} \)
\(\pm {\frac {1}{3}}{\sqrt {5+2{\sqrt {\frac {10}{7}}}}} \) \({\frac {322-13{\sqrt {70}}}{900}} \)

Exemplo

Para exemplificar a resolução, vamos resolver a integral com \(n=3\):

\[\int_{-0.5}^{1}{-\frac{x^4}{e^{cos(x^2)}} + 2} dx\]

Inicialmente vamos desenvolver a fórmula genérica aplicada para 3 pontos:

\[I = \int_{-1}^{1}{F(t)}dt = \sum_{i=1}^{3}{A_iF(t_i)} = A_1F(t_1) + A_2F(t_2) + A_3F(t_3)\]

Da tabela de valores de \(t_i\) e \(A_i\) vamos utilizar a linha que se refere a valor de \(n=3\):

Número de Pontos \(t_i\) \(A_i\)
3 \(0\) \({\frac {8}{9}} \)
\(\pm {\sqrt {\frac {3}{5}}} \) \({\frac {5}{9}} \)

Com isso teremos:

\[ I = \frac {8}{9} F(0) + \frac {5}{9} F(\sqrt {\frac {3}{5}}) + \frac {5}{9} F(-\sqrt {\frac {3}{5}})\]

Siga o cálculo de cada parte dessa equação:

Calculando o primeiro conjunto de valores \(A_1F(t_1)\)
\[ A_1F(t_1) = \frac {8}{9} \times F(0) \] \[ A_1F(t_1) = 0.888889 \times F(0) \]

Lembrando que:

\[F(t) = \frac{b-a}{2} \times f\left(\frac{b-a}{2}t + \frac{b+a}{2} \right)\]

Desenvolvemos o valor de \(F(t_1)\):

\[ F(t_1) = \frac{1-(-0.5)}{2} \times f\left(\frac{1-(-0.5)}{2}t + \frac{1+(-0.5)}{2} \right)= 0.75 \times f\left(0.75t + 0.25 \right) \]

Portanto:

\[F(t_1) = 0.75 \times f\left(0.75t + 0.25 \right)\]

Desenvolvendo:

\[ F(0) = 0.75 \times f\left(0.75 \times 0 + 0.25 \right) \] \[ F(t_1) = 0.75 f(0.25) \]

Substituindo a função \(f\):

\[ F(t_1) = 0.75 \times -\frac{0.25^4}{e^{cos(0.25^2)}} \] \[ F(t_1) = 0.75 \times 1.99856 \] \[ F(t_1) = 1.49892 \]

E concluindo o cálculo de \(A_1F(t_1)\):

\[ A_1F(t_1) = 0.888889 \times 1.49892 = 1.33237 \]

Calculando o segundo conjunto de valores \(A_2F(t_2)\)
\[ A_2F(t_2) = \frac {5}{9} \times F(\sqrt {\frac {3}{5}}) \] \[ A_2F(t_2) = 0.555556 \times F(0.774597) \]

O valor de \(F(t_2)\):

\[ F(-0.774597) = 0.75 \times f\left(0.75 \times -0.774597 + 0.25 \right) \] \[F(t_2) = 0.75 f(0.830948)\] \[ F(t_2) = 0.75 \times -\frac{0.830948^4}{e^{cos(0.830948^2)}} \] \[ F(t_2) = 0.75 \times 1.77947 \] \[ F(t_2) = 1.3346 \]

Concluindo o cálculo de \(A_2F(t_2)\):

\[ A_2F(t_2) = 0.555556 \times 1.3346 = 0.741444 \]

Calculando o último conjunto de valores \(A_3F(t_3)\)
\[ A_3F(t_3) = \frac {5}{9} \times F(-\sqrt {\frac {3}{5}}) \] \[ A_3F(t_3) = 0.555556 \times F(-0.774597) \]

O valor de \(F(t_3)\):

\[ F(-0.774597) = 0.75 \times f\left(0.75 \times -0.774597 + 0.25 \right) \] \[ F(t_3) = 0.75 f(-0.330948) \] \[ F(t_3) = 0.75 \times -\frac{-0.330948^4}{e^{cos(-0.330948^2)}} \] \[ F(t_3) = 0.75 \times 1.99556 \] \[ F(t_3) = 1.49667 \]

Concluindo o cálculo de \(A_3F(t_3)\):

\[ A_3F(t_3) = 0.555556 \times 1.49667 = 0.831483 \]

Somando os resultados:

\[ \sum_{i=1}^{3}{A_iF(t_i)} = A_1F(t_1) + A_2F(t_2) + A_3F(t_3) = 1.33237 + 0.741444 + 0.831483 = 2.9053\]

Próximo do resultado exato: \(2.90127824988 \)

Dicas de programação em Python

A seguir é apresentado um programa que armazena os valores de \(t_i\) e \(A_i\) em uma lista e mostra os pontos conforme o número escolhido:

from math import sqrt

pontos_gauss = {
    1: [(0, 2)],
    2: [(1/sqrt(3), 1), (-1/sqrt(3), 1)],
    3: [(0, 8/9), (sqrt(3/5), 5/9), (-sqrt(3/5), 5/9)],
    4: [
        (sqrt(3/7 - 2/7*sqrt(6/5)), (18 + sqrt(30))/36),
        (-sqrt(3/7 - 2/7*sqrt(6/5)), (18 + sqrt(30))/36),
        (sqrt(3/7 + 2/7*sqrt(6/5)), (18 - sqrt(30))/36),
        (-sqrt(3/7 + 2/7*sqrt(6/5)), (18 - sqrt(30))/36),
    ],
    5: [
        (0, 128/225),
        (1/3*sqrt(5 - 2*sqrt(10/7)), (322 + 13*sqrt(70))/900),
        (-1/3*sqrt(5 - 2*sqrt(10/7)), (322 + 13*sqrt(70))/900),
        (1/3*sqrt(5 + 2*sqrt(10/7)), (322 - 13*sqrt(70))/900),
        (-1/3*sqrt(5 + 2*sqrt(10/7)), (322 - 13*sqrt(70))/900),
    ],
}

n = 5
for i, (t, A) in enumerate(pontos_gauss[n], start=1):
    print(f"t({i}) = {t:.6f}, A({i}) = {A:.6f}")

Resolvendo integrais em Python:

Para resolver integrais diretamente em Python, podemos usar a biblioteca scipy para cálculo numérico.

O mesmo resultado pode ser obtido por código:

from math import exp, sqrt
from scipy.integrate import quad

def f(x):
    return x**3 - sqrt(exp(x**2)) + 1

resultado, erro_estimado = quad(f, 0.8, 2.2)
print(resultado)

Essa forma é mais útil quando o cálculo precisa ser repetido ou comparado com métodos numéricos implementados manualmente.

Atividade

Calcule o valor da integral abaixo através do método de Quadratura Gaussiana com o número de pontos definido:

  • \[ \int_{-2}^{1.5}{x^5-5x^3+2x^2+5x+2}dx \]

    Com \(n = 2\)

  • \[ \int_{-2}^{1.5}{x^5-5x^3+2x^2+5x+2}dx \]

    Com \(n = 3\)

  • \[ \int_{-2}^{1.5}{x^5-5x^3+2x^2+5x+2}dx \]

    Com \(n = 5\)