A idéia do procedimento numérica da integração definida é aproximar a função a ser integrada por um polinômio interpolador, e aproveitar o caráter algébrico da integração de polinômios para obter uma fórmula de integração. Se $f:[a,b]\to \mathbb{R}$ é integravel e $\{x_0,\dots,x_k\}\subset [a,b]$ é uma partição do domínio, então teremos $$ \int_a^b f(x)dx \approx \int_a^b p_k(x)dx $$ onde $p_k$ é o polinômio interpolador de $f$. Nas fórmulas do tipo de Newton-Cotes, o intervalo da integração é dividido em partes iguais de comprimento $h$, veremos dois métodos: método do trapézio e método de Simpson
Neste caso $x_0=a,$ $x_1=b$ e $h= b-a$. O polinômio interpolador pode se escrever como $p_1(x) = f_0 + (f_1-f_0)(x-x_0)/h$. Usamos a notação $f_i=f(x_i)$ para abreviar a fórmula. $$ \int_a^b p_1(x)dx = \frac{h}{2}(f_0+f_1) = \mathcal{T}_a^bf$$
def Trapezio(f,a,b):
''' Aplica o método do trapézio simples para aproximar a integral de f no intervalo [a,b]'''
return (b-a)*(f(a)+f(b))/2
O caso em que escolhemos os nós $x_0=a,$ $x_1 = (a+b)/2 $ e $x_3 = b$ com $h=(b-a)/2$ é conhecido como método de Simpson. Neste caso temos $p_2(x)= f_0 L_0(x) + f_1 L_1(x) + f_2L_2(x) $, na forma de Lagrange, e fazendo a integração temos: $$ \int_a^bp_2(x)dx = \frac{h}{3}(f_0 + 4f_1 +f_2) = \mathcal{S}_a^b(f)$$
def Simpson(f,a,b):
''' Aplica o método de Simpson para aproximar a integral de f no intervalo [a,b]'''
return (b-a)*(f(a) + f(b) +4*f((a+b)/2))/6
Os dois métodos anteriores podem ser aplicados repetidamente dividindo o intervalo $[a,b]$ em quantidades apropriadas.
Dividimos o intervalo em $n$ partes com os nós em $x_i=a+ih$. Usamos o método do trapézio em cada subintervalo $[x_i,x_{i+1}]$ e somamos tudo. Fazendo $h =(b-a)/n$ obtemos $$ \mathcal{T}_n(f) = \frac{h}{2}(f_0 + 2\sum_{i=1}^{n-1}f_i +f_n) $$
Dividimos intervalo em $2n$ partes e aplicamos o método de Simpson simples em cada subintervalo $[x_{2i},x_{2i+2}]$, e somamos o resultado parcial. Com $h =(b-a)/2n$ o resultado é a fórmula $$ \mathcal{S}_n(f)= \frac{h}{3}(f_0 + 4\sum_{k=0}^{n-1} f_{2k+1} + 2\sum_{k=1}^{n-1}f_{2k} + f_{2n})$$
# Exercicio: definir as funções que dão a integral com repetições, onde o número de repetições e um parâmetro