Integración por la fórmula de Simpson
Vamos a calcular el valor de una integral definida
La solución descrita aquí se publicó en una de las disertaciones de Thomas Simpson en 1743.
Fórmula de Simpson
Sea algún número natural. Dividimos el segmento de integración en partes iguales:
Ahora calculamos la integral por separado en cada uno de los segmentos , , y luego sumamos todos los valores.
Así, supongamos que consideramos el siguiente segmento . Reemplazamos la función en él por una parábola que pasa por 3 puntos . Tal parábola siempre existe y es única; se puede hallar analíticamente. Por ejemplo podríamos construirla usando la interpolación polinómica de Lagrange. Lo único que queda por hacer es integrar este polinomio. Si se hace esto para una función general , se recibe una expresión notablemente simple:
Sumando estos valores sobre todos los segmentos, obtenemos la fórmula de Simpson final:
Error
El error al aproximar una integral por la fórmula de Simpson es
donde es algún número entre y .
El error es asintóticamente proporcional a . Sin embargo, las derivaciones de arriba sugieren un error proporcional a . La regla de Simpson gana un orden extra porque los puntos en los que se evalúa el integrando están distribuidos simétricamente en el intervalo .
Implementación
Aquí, es alguna función definida por el usuario.
const int N = 1000 * 1000; // number of steps (already multiplied by 2)
double simpson_integration(double a, double b){
double h = (b - a) / N;
double s = f(a) + f(b); // a = x_0 and b = x_2n
for (int i = 1; i <= N - 1; ++i) { // Refer to final Simpson's formula
double x = a + h * i;
s += f(x) * ((i & 1) ? 4 : 2);
}
s *= h / 3;
return s;
}