#1 Aproximando uma integral

Considere uma função suave f em [a,b]. Divida o intervalo em n subintervalos uniformes, com h=(b−a)/n e xi=a+ih. A regra composta dos trapézios é

(1)Tn=h[f(a)+f(b)2+∑i=1n−1f(xi)].

A expressão (1) aproxima cada trecho da curva por um segmento de reta. Para f∈C2([a,b]), o erro global é de ordem h2.

#2 Implementação

trapezoid.py
def trapezoid(f, a, b, n):
    if not isinstance(n, int) or isinstance(n, bool) or n < 1:
        raise ValueError("n must be a positive integer")
    h = (b - a) / n
    interior = sum(f(a + i * h) for i in range(1, n))
    return h * (0.5 * f(a) + interior + 0.5 * f(b))


approximation = trapezoid(lambda x: x * x, 0.0, 1.0, 4)
print(approximation)  # 0.34375

#3 Um caso verificável

Para f(x)=x2 no intervalo [0,1], a integral exata é 1/3. Neste caso, em aritmética exata,

(2)Tn−13=16n2.

Assim, duplicar n divide o erro por quatro. A tabela usa a expressão analítica do erro; valores em ponto flutuante podem diferir nas últimas casas decimais.

Subintervalos n Erro Tn−1/3
1 1/6
2 1/24
4 1/96
8 1/384
Tabela 1. Erro exato da regra dos trapézios para x² em [0,1].

Use Tabela 1 para conferir os resultados do notebook complementar.

Carregando gráfico interativo…

Figura 1. A função x² e a interpolação linear usada por quatro trapézios em [0,1].

Em Figura 1, passe o cursor sobre os dados para inspecionar os valores ou use as ferramentas do gráfico para ampliar uma região. A área sob os segmentos de reta corresponde a T4=0.34375.

#4 Exercícios

  1. Implemente o método e verifique o erro para n=1,2,4,8.
  2. Calcule a razão entre os erros de duas malhas consecutivas.
  3. Troque o integrando por f(x)=x. Explique o resultado antes de executar.
Conferência do terceiro exercício

A regra dos trapézios integra funções afins exatamente em aritmética exata. Para f(x)=x em [0,1], o resultado esperado é 1/2 para qualquer n≥1.

Volte ao índice de aulas ou consulte o programa.