5.1 Integração Numérica — Regra do Trapézio

1. Introdução

Da mesma forma como apresentamos nos posts sobre derivação numérica, a integração numérica consiste em uma espécie de interpolação. A ideia é substituir uma função complicada \(f(x) \) por outra composta por operações mais simples e fácil de se integrar. Além disso, como mostramos em diversos posts relacionados aos métodos de interpolação, as fórmulas mais simples que podemos obter são polinômios. Assim, podemos obter esses polinômios através da fórmula de Taylor ou outra estratégia.

Tais polinômios gerados para integração numérica são chamados de fórmulas de Newton-Cotes, que possuem a seguinte forma de aproximação

\( I = \int_{a}^{b} f(x) dx \approx \int_{a}^{b} f_n(x) dx \)

onde \(f_n(x) \) é um polinômio na forma
\( f_n(x) = a_0 + a_1 x + a_x x^2 + \cdots + a_{n-1} x^{n-1} + a_n x^n \)

onde \(n \) é o grau do polinômio. Por exemplo, na figura abaixo os gráficos mostram a função original \(f(x) \) em vermelho e duas aproximações distintas em azul. No gráfico da esquerda, um polinômio de primeiro grau (reta) é usado para aproximar a função em duas divisões. O gráfico da direita utiliza um polinômio de grau maior para aproximar a função em cada intervalo.



numerical

Da figura acima também podemos notar que a integral é melhor aproximada se usarmos uma série de polinômios aplicados por partes à função \(f(x) \), dividindo-se o intervalo de integração em sub-intervalos menores.

 

2. A Regra do Trapézio

A regra do trapézio consiste na utilização de \(f_n(x) \) com \(n=1 \) . Portanto, ela corresponde à primeira fórmula de Newton-Cotes:

\( I = \int_{a}^{b} f(x) dx \approx \int_{a}^{b} f_1(x) dx \)

onde
\( f_1(x) = f(a) + \frac{f(b) – f(a)}{b – a} (x – a) \)

A área sob \(f_1(x) \) é uma estimativa da integral de \(f(x) \) entre os extremos \(a \) e \(b \) . Para obtermos essa estimativa, expressamos a equação acima como

\( f_1(x) = \frac{f(b)-f(a)}{b-a}x + f(a) – \frac{af(b) – af(a)}{b-a} \)

Agrupando os dois últimos termos, obtemos
\( f_1(x) = \frac{f(b)-f(a)}{b-a}x + \frac{bf(a) – af(a) – af(b) + af(a)}{b-a} \)

ou
\( f_1(x) = \frac{f(b)-f(a)}{b-a}x + \frac{bf(a) – af(b)}{b-a} \)

que é então integrada, fornecendo
\( I = \frac{f(b)-f(a)}{b-a} \frac{x^2}{2} + x \frac{bf(a)-af(b)}{b-a} \)

Na expressão integrada que vemos acima, usamos o intervalo delimitado por \(x=a \) e \(x=b \) . Esse resultado pode ser calculado por
\( I = \frac{f(b)-f(a)}{b-a}\frac{b^2-a^2}{2} + \frac{bf(a)-af(b)}{b-a}(b-a) \)

Agora, como \(b^2-a^2 = (b-a)(b+a) \) , temos
\( I = [f(b)-f(a)] \frac{b+a}{2} + bf(a) – af(b) \)

que ao fazermos a multiplicação e agruparmos os termos, temos
\( I = (b-a) \frac{f(a)+f(b)}{2} \)

que é a fórmula da regra dos trapézios.

 

2.1. Divisão de intervalos

Para melhorar a acurácia da integração, devemos dividir o intervalo de integração de \(a \) e \(b \) em diversos segmentos e aplicar o método a cada asegmento. Cada área correspondente aos segmentos individuais podem então ser somadas para fornecer a integral para o intervalo inteiro. A figura abaixo mostra como um conjunto de trapézios formados em cada subintervalo dividido se aproxima da integral.



numerical

Dividindo o intervalo de integração \([a,b] \) em \(n \) partes, temos \(n \) segmentos de mesma largura tal que

\( h = \frac{b – a}{n} \)

Se \(a \) e \(b \) forem respectivamente renomeados por \(x_0 \) e \(x_n \) , a integral total pode ser obtida por
\( I = \int_{x_0}^{x_1} f(x) dx + \int_{x_1}^{x_2} f(x) dx + \cdots + \int_{x_{n-1}}^{x_n} f(x) dx \)

Substituindo cada integral pela regra do trapézio, obtemos
\( I = h \frac{f(x_0)+f(x_1)}{2} + h \frac{f(x_1)+f(x_2)}{2} + \cdots + h \frac{f(x_{n-1})+f(x_n)}{2} \)

Agrupando os termos da equação acima, temos
\( I = \frac{h}{2} \left[ f(x_0) + 2 \sum_{i=1}^{n-1} f(x_i) + f(x_n) \right] \)

que é a expressão usada na implementação da regra dos trapézios.

 

3. Estimativa do Erro

Como a soma dos coeficientes de \(f(x) \) no numerador dividido por \(2n \) é igual a 1, a altura média representa uma média ponderada dos valores da função. De acordo com a última equação apresentada na seção anterior, os pontos interiores tem um peso duas vezes maior do que as extremidades. Assim, um erro para a aplicação múltipla da regra dos trapézios pode ser obtido pela soma dos erros individuais em cada segmento, o que dá

\( E = – \frac{(b-a)^3}{12n^3} \sum_{i=1}^{n} f”(\varepsilon_i) \)

em que \(f”(\varepsilon_i) \) é a segunda derivada em um ponto \(\varepsilon_i \) localizado no segmento \(i \) . Esse resultado pode ser simplificado por uma estimativa do valor médio da segunda derivada no intervalo todo como
\( g” \approx \frac{\sum_{i=1}^{n}f”(\varepsilon_i)}{n} \)

Portanto, \(\sum f”(\varepsilon_i) \approx ng” \) e a expressão do erro em função do número de intervalos pode ser escrita como
\( E(n) = – \frac{(b-a)^3}{12n^2} g” \)

Onde \(g”\) é a média das derivadas de segunda ordem.

 

4. Implementação

def trapezoid(f, xi, xe, n=10000):
    """
    Numerical integration using the Trapezoid Rule.
 
    integral = trapezoid(f, xi, xe, n=10000)
 
    INPUT:
      * f: function to be integrated
      * xi: beginning of integration interval
      * xe: end of integration interval
      * n: number of interval divisions
 
    return: \int_{xi}^{xe} f(x)
 
    Author: Pedro Garcia [sawp@sawp.com.br]
    see: http://www.sawp.com.br
 
    License: Creative Commons
             http://creativecommons.org/licenses/by-nc-nd/2.5/br/
 
    Jul 2012
    """
    h = float(xe - xi) / n
    t = [f(xi)] + [2 * f(xi + i * h) for i in xrange(1, n)] + [f(xi + n * h)]
    integral = sum(t) * (h / 2.0)
    return integral

Um exemplo de utilização dessa função pode ser obtido em http://www.sawp.com.br/code/integral/integral_trapezoid.py.

 

5. Copyright

Este documento é disponível sob a licença Creative Commons. As regras dos direitos de cópia deste conteúdo estão acessíveis em http://creativecommons.org/licenses/by-nc-nd/2.5/br/.

References

[1] Anthony Ralston and Philip Rabinowitz, A First Course in Numerical Analysis (2nd ed.), McGraw-Hill and Dover, (2001).

[2] N.B Franco, Cálculo Numérico, Pearson Prentice Hall (2006).