Integral Numérica - Método do Trapézio Composto
Usaremos o Método do Trapézio Composto para o cálculo da áreas de funções.
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))$$
import numpy as np
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")
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)
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)
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)