Integración numérica

Contenidos

Introducción

Fórmula de cuadratura

Las fórmulas de integración numérica o de cuadratura son de la forma: \[ \int_{a}^{b}f(x)dx\approx \omega_{0}f(x_{0})+\omega_{1}f(x_{1})+\cdots +\omega_{n}f(x_{N}) \] donde \(x_{0},x_{1},...,x_{N}\) (nodos) son \(N+1\) puntos distintos pertenecientes al intervalo \([a,b]\) y \(\omega_{0},\omega_{1},\ldots ,\omega_{N}\) (pesos) son números reales.

Fórmula interpolatoria

Si \(P_{N}\) es el polinomio que interpola a \(f\) en los puntos distintos \(x_{0},x_{1},...,x_{N} \in \left[ a,b\right]\) y \[ \int_{a}^{b}f(x)dx\approx \int_{a}^{b}P_N(x)dx=\omega_{0}f(x_{0})+\omega_{1}f(x_{1})+\cdots +\omega_{n}f(x_{N}) \] decimos que la fórmula de cuadratura es de tipo interpolatorio.

Grado de precisión

Una fórmula de cuadratura tiene grado de precisión \(r\) si es exacta para \[f\left( x\right) =1,\quad f\left( x\right) =x,\quad f\left( x\right) =x^{2},...,f\left( x\right) =x^{r}\] pero no es exacta para \(f\left( x\right) =x^{r+1}\)

Fórmulas de cuadratura de Newton-Cotes simples

Son fórmulas de cuadratura de tipo interpolatorio, eligiendo los puntos de interpolación (nodos de la fórmula) igualmente separados de una de las dos formas siguientes:

FÓRMULA DEL PUNTO MEDIO

La fórmula del punto medio es \[\int_{a}^{b}f(x)dx\approx (b-a)f\left( \frac{a+b}{2}\right)\] Usar la fórmula del punto medio para integrar una función en un intervalo, equivale a sustituir, dentro de la integral, la función a integrar por el polinomio de interpolación de grado cero, es decir, una recta horizontal que pasa por el punto medio de la función. Sustituimos la función por una recta e integramos. Estamos entonces calculando el área de un rectángulo.

f=@(x) exp(x);a=0;b=3;
[valor_aproximado valor_exacto]=punto_medio(f,a,b);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 13.4451

Ejercicio 1 Escribir una función llamada punto_medio.m que tiene como argumentos de entrada la función \(f\) a integrar y los extremos del intervalo de integración \(a\) y \(b\) que devuelve el valor aproximado utilizando la Regla del Punto Medio y el valor exacto.

Ejercicio 2 Integrando polinomios de distinto grado, decidir cual es el grado de precisión de la Fórmula del Punto Medio.

FÓRMULA DE LOS TRAPECIOS

La fórmula de los trapecios simple es \[\int_{a}^{b}f(x)dx\approx \frac{b-a}{2}\left( f\left( a\right) +f\left( b\right) \right)\] Usar la fórmula de los trapecios para integrar una función en un intervalo, equivale a sustituir, dentro de la integral, la función a integrar por el polinomio de interpolación de grado uno, que pasa por los puntos de la función de los extremos del intervalo. Es decir, sustituimos la función por una recta e integramos. Estamos entonces calculando el área de un trapecio.

f=@(x) exp(x);a=0;b=3;
[valor_aproximado valor_exacto]=trapecio(f,a,b);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 31.6283

Ejercicio 3 Escribir una función llamada trapecio.m que tiene como argumentos de entrada la función \(f\) a integrar y los extremos del intervalo de integración \(a\) y \(b\) que devuelve el valor aproximado utilizando la Regla del Trapecio y el valor exacto.

Ejercicio 4 Integrando polinomios de distinto grado, decidir cual es el grado de precisión de la Fórmula de los Trapecios.

FÓRMULA DE SIMPSON

La fórmula de Simpson simple es \[\int_{a}^{b}f(x)dx\approx \frac{b-a}{6}\left( f\left( a\right) +4f\left( \frac{a+b}{2}\right) +f\left( b\right) \right)\] Usar la fórmula de Simpson para integrar una función en un intervalo, equivale a sustituir, dentro de la integral, la función a integrar por el polinomio de interpolación de grado dos, que pasa por los puntos de la función de los extremos y el punto medio del intervalo. Es decir, sustituimos la función por una parábola e integramos.

f=@(x) exp(x);a=0;b=3;
[valor_aproximado valor_exacto]=simpson(f,a,b);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 19.5061

Ejercicio 4 Escribir una función llamada simpson.m que tiene como argumentos de entrada la función \(f\) a integrar y los extremos del intervalo de integración \(a\) y \(b\) que devuelve el valor aproximado utilizando la Regla de Simpson y el valor exacto.

Ejercicio 5 Integrando polinomios de distinto grado, decidir cual es el grado de precisión de la Fórmula de Simpson.

Fórmulas de cuadratura de Newton-Cotes compuestas

Aunque vemos que, en general, la fórmula de Simpson proporciona un error menor que la regla de los trapecios, y esta a su vez proporciona un error menor que la regla del punto medio, al aumentar el número de nodos de las fórmulas simples, el error no tiende a cero. Una alternativa para disminuir el error es aumentar el número de nodos utilizando las fórmulas compuestas. Estas se obtienen dividiendo el intervalo \(\left[ a,b\right] \) en \(n\) subintervalos y aplicando a cada uno de estos subintervalos una fórmula de cuadratura sencilla.

Sea \[\bar x_n =\frac{x_{n-1}+x_n}{2}\]

FÓRMULA DEL PUNTO MEDIO COMPUESTA

\[ \int_a^b f dx \approx h\sum_{n=1}^{N}f(\bar x_n)\]

f=@(x) exp(x);a=0;b=3;N=4;
[valor_aproximado valor_exacto]=punto_medio_comp(f,a,b,N);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 18.6455

Ejercicio 7

REGLA DE LOS TRAPECIOS COMPUESTA \[ \int_a^b f dx \approx \frac{h}{2}(f(a)+f(b))+h\sum_{n=1}^{N-1}f(x_n)\]

f=@(x) exp(x);a=0;b=3;N=4;
[valor_aproximado valor_exacto]=trapecio_comp(f,a,b,N);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 19.9719

Ejercicio 8

FÓRMULA DE SIMPSON COMPUESTA \[ \int_a^b f dx \approx \frac{h}{6}\sum_{n=1}^{N}\left(f(x_{n-1})+4f(\bar x_n)+f(x_n)\right)) \]

f=@(x) exp(x);a=0;b=3;N=4;
[valor_aproximado valor_exacto]=simpson_comp(f,a,b,N);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 19.0876

Ejercicio 9

Fórmulas de cuadratura gaussianas

En la fórmula de cuadratura: \[ \int_{a}^{b}f(x)dx\approx \omega_{0}f(x_{0})+\omega_{1}f(x_{1})+\cdots +\omega_{N}f(x_{N}) \] ¿Es posible calcular los pesos \(\omega_i\) y los nodos \(x_i\) de forma que la precisión de la fórmula sea lo mayor posible? Sí, pero entonces los nodos no estarán equiespaciados.

Si \([a,b]=[-1,1]\) los pesos y nodos son

Así, por ejemplo, la fórmula gaussiana para un punto es \[ \int_{-1}^{1}f(x)dx\approx 2 f(0) \] Para dos puntos \[ \int_{-1}^{1}f(x)dx\approx f(-0.5773502692)+f(0.5773502692) \] Para tres puntos \[ \int_{-1}^{1}f(x)dx\approx 0.555555556 f(-0.774596692)+0.8888888889f(0)+ 0.555555556 f(0.774596692) \] Y así sucesivamente.

Estos resultados se pueden generalizar a cualquier intervalo \([a,b]\) cambiando los \(x_i\) por \(y_i\) de acuerdo con la fórmula \[y_i=\frac{b-a}{2}x_i+\frac{a+b}{2}\] Y entonces la fórmula de cuadratura es \[ \int_{a}^{b}f(x)dx\approx\frac{b-a}{2}\left( \omega_{0}f(y_{0})+\omega_{1}f(y_{1})+\cdots +\omega_{n}f(y_{n})\right) \]

Ejercicio 10 Escribir una función llamada gauss.m que tiene como argumentos de entrada la función \(f\) a integrar, los extremos del intervalo de integración \(a\) y \(b\) y el número de puntos de interpolación \(n\) (que podrá ser igual a uno, dos o tres) y devuelve el valor aproximado de la integral utilizando la fórmula gaussiana correspondiente y que devuelve también el valor exacto.

f=@(x) exp(x);a=0;b=3;n=1;
[valor_aproximado valor_exacto]=gauss(f,a,b,n);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 13.4451
f=@(x) exp(x);a=0;b=3;n=2;
[valor_aproximado valor_exacto]=gauss(f,a,b,n);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 18.8101
f=@(x) exp(x);a=0;b=3;n=3;
[valor_aproximado valor_exacto]=gauss(f,a,b,n);
fprintf('El valor exacto es %7.4f\nEl valor aproximado es %7.4f\n',...
         valor_exacto, valor_aproximado)
El valor exacto es 19.0855
El valor aproximado es 19.0803

Ejercicio 11 Comparar cada fórmula de Gauss con la fórmula simple de Newton-Cotes que utiliza el mismo número de puntos de interpolación:

Integración numérica con órdenes Matlab

Hay varias órdenes que utilizan diferentes métodos. Cada una es adecuada para distintos tipos de funciones. Por ejemplo