Método do Trapézio Composto

Regra dos Trapézios – Definições

  • Numericamente a regra dos trapézios é obtida aproximando-se f(x) por um polinômio interpolador de 1° grau.
  • Em seguida calcula-se a área do trapézio cuja base está sobre o eixo dos x.

image

Origem: Pag(12)

Regra dos Trapézios – Dedução da Fórmula

Teorema

Se f(x) for uma função continua em (a, b) onde a é o limite inferior de integração e b o limite superior de integração, A regra do Trapézio composta que podemos usar para aproximar $ \int_{a}^{b} f(x) \,dx $ é dada por:

n:Intervalos Igualmente Espaçados

$$h = \dfrac{b-a}{n}$$

$$\int_{a}^{b} f(x) \,dx \approx \dfrac{1}{2}h(f(a) + 2[f(x_1) + f(x_2) +$$

$$\dots + f(x_{n-1})] + f(b))$$



Implementação do Algorítimo em Python

Biblioteca Python

Importando as Biblioteca Python que será usada no código.

import numpy as np
Código Python

Código para integração numérica usando o Método do Trapézio.

Onde:

  • [a] Limite inferior
  • [b] Limite superior
  • [n] sub-intervalos
  • [f ] função que será integrada
def integ_trap(f, a, b, n):
    # O passo de integração, n é a quantidade de subintervalos que queremos.
    h = (b-a)/ float(n)
    
    f_a = f(a)
    
    x = a
    x += h
    somatorio = 0.0
    while (x < b):
        somatorio += 2*f(x)
        x += h

    f_b = f(b)

    integral_trap = (h /2.0)*(f_a + somatorio + f_b)
    
    print('\n***************************'+'\033[1m'+ ' SAÍDA ' + '\033[0m'+'***************************\n')
    print(f"\tIntegral               ≈ {integral_trap}")
    print(f"\tSubintervalos [n]      = {n}")
    print(f"\tPasso [h]              = {h}")
    print(f"\tLimite Inferior [a]  = {a}")
    print(f"\tLimite Superior [b]  = {b}")
    print("\n*************************************************************\n")
    

Exemplo 01

Aplicando o Método do Trapézio ao exemplo abaixo, temos:

$$\int_{0}^{2} cos(x) \,dx$$


$$\int_{a}^{b} cos(x) \,dx \approx \dfrac{1}{2}h(cos(x) + 2[cos(x_1) + cos(x_2) +$$

$$\dots + cos(x_{n-1})] + cos(b))$$


Código

f = lambda x: np.cos(x)

# Aplicando a integral usando o método do trapézio

a = 0; b = 2; n = 100000
integ_trap(f, a, b, n)
*************************** SAÍDA ***************************

	Integral               ≈ 0.9092891038599877
	Subintervalos [n]      = 100000
	Passo [h]              = 2e-05
	Limite Inferior [a]  = 0
	Limite Superior [b]  = 2

*************************************************************


Exemplo 02

Aplicando o Método do Trapézio ao exemplo abaixo, temos:

$$\int_{0}^{2} 2x - e^x \,dx$$


$$\int_{a}^{b} 2 e^x \,dx \approx \dfrac{1}{2}h(2 e^a + 2[2 e^{x_1} + 2 e^{x_2} + $$

$$\dots + 2 e^x_{n-1}] + 2 e^b)$$


Código

f = lambda x: 2*x-np.exp(x)

# Aplicando a integral usando o método do trapézio
a = 0; b = 2; n = 10000
integ_trap(f, a, b, n)
*************************** SAÍDA ***************************

	Integral               ≈ -2.389733931446894
	Subintervalos [n]      = 10000
	Passo [h]              = 0.0002
	Limite Inferior [a]  = 0
	Limite Superior [b]  = 2

*************************************************************


Exemplo 03

Aplicando o Método do Trapézio ao exemplo abaixo, temos:

$$\int_{0}^{2} x^2 \,dx$$


$$\int_{a}^{b} x^2 \,dx \approx \dfrac{1}{2}h(a^2 + 2[x_1^2 + x_2^2 +$$

$$\dots + x_{n-1}^2] + b^2)$$


Código

f = lambda x: x**2

# Aplicando a integral usando o método do trapézio
a = 0; b = 2; n = 1000
integ_trap(f, a, b, n)
*************************** SAÍDA ***************************

	Integral               ≈ 2.666668000000003
	Subintervalos [n]      = 1000
	Passo [h]              = 0.002
	Limite Inferior [a]  = 0
	Limite Superior [b]  = 2

*************************************************************