Obtenção da Fórmula
A primeira regra de Simpson é obtida aproximando-se a função \(f(x)\) por um polinômio interpolador de 2º Grau:
\[f(x) \doteq P_2(x) = y_1 +z \Delta_{y_1} + \frac{(z)(z-1)}{2!}\cdot \Delta^2_{y_1}\]Logo:
\[I = h\left[2y_1+2(y_2-y_1) + \frac{1}{3}(y_3-2y_2+y_1) \right] \]Resultando:
Fórmula Composta
Como foi feito com a regra de trapézios, deve-se subdividir o intervalo de integração \([a, b]\) em \(n\) subintervalos iguais de amplitude \(h\) e a cada par de subintervalos aplicar a 1ª regra de Simpson
Como a regra de Simpson é aplicada em pares de subintervalos, o número \(n\) de subintervalos deverá ser sempre par.
Aplicando para os subintervalos:
\[I=\frac{h}{3}\underbrace{(y_1+4y_2+y_3)}_{\textrm{1º subintervalo}}+ \frac{h}{3}\underbrace{(y_2+4y_3+y_4)}_{\textrm{2º subintervalo}} + \cdots + \frac{h}{3}\underbrace{(y_{n-2}+4y_{n-1}+y_n)}_{\textrm{nº subintervalo}}\]Em evidência:
Exemplo 1
Calcule o valor da integral definida através da 1ª Regra de Simpson com \(n=4\):
\[\int_{0.8}^{2.2}{x^3-\sqrt{e^{x^2}}+1}dx\]De forma gráfica:
Inicialmente vamos definir a altura dos pontos:
\[h=\frac{2.2 - 0.8}{4} = 0.35\]Com isso, vamos calcular os valores de \(y_i\)
| \(i\) | \(x_i\) | \(y_i\) |
|---|---|---|
| 1 | 0.8 | 0.134872 |
| 2 | 1.15 | 0.583663 |
| 3 | 1.5 | 1.29478 |
| 4 | 1.85 | 1.79575 |
| 5 | 2.2 | 0.402141 |
Ajustando a expressão genérica para a quantidade \(n\) de elementos:
\[I = \frac{h}{3}(y_1+4y_2+2y_3+4y_4+y_5)\]E desenvolvendo o cálculo:
\[I = \frac{0.35}{3} \times ( 0.134872 + (4 \times 0.583663) + (2 \times 1.29478) + (4 \times 1.79575) + 0.402141 ) = 1.47516\]Esse resultado pode ser visto no gráfico:
Exemplo 2
Calcule o valor da integral abaixo através da 1ª Regra de Simpson desta vez com \(n=8\):
\[\int_{0.8}^{2.2}{ x^3-\sqrt{e^{x^2}}+1}dx\]Calculando a altura dos pontos:
\[h=\frac{2.2 - 0.8}{8} = 0.175\]Os valores de \(y_i\)
| \(i\) | \(x\) | \(y\) |
|---|---|---|
| 1 | 0.8 | 0.134872 |
| 2 | 0.975 | 0.318343 |
| 3 | 1.15 | 0.583663 |
| 4 | 1.325 | 0.920571 |
| 5 | 1.5 | 1.29478 |
| 6 | 1.675 | 1.6328 |
| 7 | 1.85 | 1.79575 |
| 8 | 2.025 | 1.53344 |
| 9 | 2.2 | 0.402141 |
A expressão genérica para \(n = 8\):
\[I = \frac{h}{3}(y_1+4y_2+2y_3+4y_4+2y_5 + 4y_6 + 2y_7 + 4y_8 + y_9)\]E desenvolvendo o cálculo:
\[I = \frac{0.175}{3} \times ( 0.134872 + (4 \times 0.318343) + (2 \times 0.583663) + \] \[(4 \times 0.920571) + (2 \times 1.29478) + (4 \times 1.6328) + (2 \times 1.79575) + \] \[(4 \times 1.53344) + 0.402141 ) = 1.48785\]Esse resultado pode ser visto no gráfico:
Aplicativo interativo:
Utilize o aplicativo a seguir para simular outros casos:
Exemplo 3
Dessa vez, é dada a função \( y = f(x)\) e a tabela de valores de \(y\). Calcular o valor de:
\[i=\int_{-1.5}^{0.5}{f(x)}dx\]| \(i\) | \(y\) |
|---|---|
| 1 | 3.44574 |
| 2 | 1.98118 |
| 3 | 1.25112 |
| 4 | 1.00258 |
| 5 | 0.990773 |
| 6 | 0.981514 |
| 7 | 0.752583 |
No cálculo de \(h\), lembre que o número de subintervalos é \(n = i-1\):
\[h = \frac{b-a}{n} =\frac{0.5-(-1.5)}{6} = 0.33333\]A forma genérica:
\[I = \frac{h}{3}(y_1+ 4y_2 + 2y_3 + 4y_4 + 2y_5+ 4y_6 + y_7)\]Desenvolvendo o cálculo:
\[I = \frac{0.33333}{3} \times ( 3.44574 + (4 \times 1.98118) + (2 \times 1.25112) + \] \[(4 \times 1.00258) + (2 \times 0.990773) + (4 \times 0.981514) + 0.752583 ) = 2.72702\]Dicas de programação em Python
Aplicando uma função a uma lista
Depois de criada a lista de pontos \(x\), podemos aplicar cada valor à função \(f\) para obter a lista correspondente de valores de \(y\).
Por exemplo, dada a lista \(x=\{1, 1.5, 2, 2.5, 3\}\) e a função \(f(x) = x^3- 3 x^2+x -2\), o cálculo ficaria:
| \(i\) | \(x_i\) | \(y_i\) |
|---|---|---|
| 1 | 1 | \(f(1) = 1^3- 3\times(1)^2 + 1 -2 = -3\) |
| 2 | 1.5 | \(f(1.5) = 1.5^3- 3\times(1.5)^2 + 1.5 -2 = -3.875\) |
| 3 | 2 | \(f(2) = 2^3- 3\times(2)^2 + 2 -2 = -4\) |
| 4 | 2.5 | \(f(2.5) = 2.5^3- 3\times(2.5)^2 + 2.5 -2 = -2.625\) |
| 5 | 3 | \(f(3) = 3^3- 3\times(3)^2 + 3 -2 = 1\) |
Resultando na lista de valores:
\[y = \{-3, -3.875, -4, -2.625, 1\}\]Em Python, isso pode ser escrito diretamente com uma função e uma compreensão de lista:
def f(x):
return x**3 - 3*x**2 + x - 2
x = [1, 1.5, 2, 2.5, 3]
y = [f(valor) for valor in x]
print(y)
Se a função já estiver definida no programa, basta reutilizá-la sempre que uma nova lista de pontos for criada:
x = [1, 1.5, 2, 2.5, 3]
y = list(map(f, x))
print(y)
A função map aplica f a cada elemento de x. A chamada list(...) transforma o resultado em uma lista comum.
A sequência de entrada deve conter valores numéricos. Uma lista de Python é suficiente para os exemplos desta página.
Outra maneira de aplicar a função
Quando os cálculos ficam maiores, a biblioteca numpy permite aplicar a expressão de forma vetorizada:
import numpy as np
x = np.array([1, 1.5, 2, 2.5, 3])
y = x**3 - 3*x**2 + x - 2
print(y)
Com numpy, operações como potência, multiplicação e soma são aplicadas elemento a elemento no vetor. Isso evita escrever laços explícitos quando a expressão é simples.
Atividade
Utilizando a 1ª regra de Simpson, calcule o valor da integral com a quantidade de pontos definidos.
-
\[ \int_{1}^{8}{\frac{x^4}{e^x}}dx \]
Com \(n = 2\)
-
\[ \int_{1}^{8}{\frac{x^4}{e^x}}dx \]
Com \(n = 4\)
-
\[ \int_{1}^{8}{\frac{x^4}{e^x}}dx \]
Com \(n = 8\)