Este documento describe diferentes métodos numéricos para la integración como las reglas del trapecio, Simpson y sus versiones compuestas. Explica cómo implementar estas reglas en MATLAB mediante funciones. También cubre temas como coeficientes indeterminados, cuadratura gaussiana y comandos básicos de integración en MATLAB como quad, trapz e int. Finaliza proponiendo ejercicios sobre integración múltiple, método de Romberg y cuadratura gaussiana de orden tres.
1. INTEGRACIÓN NUMÉRICA
El principio de los métodos de integración numerica, basados en las fórmulas de Newton-
Cotes, consiste en ajustar una un polinomio a un conjunto de puntos y luego integrarlo. Al
1
realizar dichas integrales obtenemos, entre otras, las reglas de trapecio y de Simpson 3 las cuales
dan lugar a reglas de integración compuestas que buscan que el error sea cada vez menor.
Usemos MATLAB para programar las reglas mencionadas anteriormente.
REGLA DEL TRAPECIO
La regla del trapecio está dada por:
Zb
b−a
f (x) dx ' [f (a) + f (b)]
2
a
si queremos programar esta regla sólo debemos tener en cuenta que los datos de entrada son a, b,
f y el dato de salida es la aproximación. En MATLAB creamos una función que nos permita
realizarlo. El código puede ser:
function aprox=trapecio(f,a,b)
f=inline(f);
aprox=((b-a)/2)*(f(a)+f(b))
Recordemos que la segunda instrucción permite que MATLAB identifique a f como una
función que depende de la variable x. Para ejecutar la función en la ventana de comandos de
Matlab digitamos trapecio(f,a,b); por ejemplo, si queremos aproximar
Z2
2
ecos x dx
0
digitamos trapecio(’exp(cos(x^2))’,0,2) y obtenemos 3.23842892946396.
1
2. REGLA DEL TRAPECIO COMPUESTA
Para un entero n ≥ 1 la regla de Trapecio compuesta esta dada por:
Zb " n−1
#
h X
f (x) dx ' f (a) + 2 f (xi ) + f (b)
2
a i=1
b−a
donde h = y xi = a + ih.
n
Si queremos programar esta regla debemos tener en cuenta que los datos de entrada son
a, b, n,f , el dato de salida es la aproximación, es necesario utilizar un ciclo interno que permita
generar xi para evaluarlo en f, multiplicarlo por dos y sumarlos. Creamos una función en
matlab que me permita realizarlo, el código será:
function aprox=tracom(f,a,b,n)
f=inline(f);
h=(b-a)/n;
aprox=f(a)+f(b);
for i=1:n-1
x=a+i*h;
aprox=aprox+2*f(x);
end
aprox=(h/2)*aprox;
Para aproximar la integral anterior empleando 10 subintervalos digitamos:
>> tracom(0exp(cos(xˆ2))0, 0, 2, 10) y obtenemos 3.22843406783607, al emplear
100 subintervalos empleamos la instrucción
>> tracom(0exp(cos(xˆ2))0, 0, 2, 100) y obtenemos 3.22335846450614.
1
REGLA DE SIMPSON 3 SIMPLE Y COMPUESTA
2
3. 1
Tenemos que las reglas de Simpson 3 simple y compuesta están dadas por:
Zb ∙ µ ¶ ¸
b−a a+b
f (x) dx ' f (a) + 4f + f (b)
6 2
a
y ⎡ ⎤
n n
−1
Zb
h⎢
⎢
2
X 2
X ⎥
⎥
f (x) dx ' ⎢f (a) + 4 f (x2i−1 ) + 2 f (x2i ) + f (b)⎥
3⎣ ⎦
a i=1 i=1
b−a
donde h = , para n un entero par mayor igual a 2 y xi = a + ih. Los límites de las
n
sumatorias y los subindices 2i − 1 y 2i indican que xj con j par se evalua en f y se multiplica
por dos, y si j es impar se evalua en f y se multiplica por 4. (esto se obtiene al aplicar regla de
1
Simpson 3 simple sobre los subintervalos [x0 , x2 ] , [x2 , x4 ] , ..., [xn−2 , xn ]). Los programas Matlab
que permiten encontrar la aproximación a la integral son:
function aprox=simpson(f,a,b)
f=inline(f);
aprox=((b-a)/6)*(f(a)+4*f((a+b)/2)+f(b));
y la compuesta está dada por
function aprox=simcom(f,a,b,n)
f=inline(f);
h=(b-a)/n;
aprox=f(a)+f(b);
for i=1:n/2
x=a+(2*i+1)*h;
aprox=aprox+4*f(x);
end
for i=1:(n/2)-1
x=a+2*i*h;
3
5. se obtiene: X = [1/6 2/3 1/6] (utilizando el formato: format rat)
En el caso de la cuadratura adaptativa la ayuda es mayor, pues en este caso se obtiene un
sistema no lineal de ecuaciones que en la mayoría de los casos es difícil de resolver sin la ayuda
de un computador. Por ejemplo consideremos la fórmula de cuadratura de orden dos:
Z 1
f (x)dx ≈ A0 f (x0 ) + A1 f (x1 )
−1
Sabemos que para hallar los nodos y los coeficientes debemos resolver el sistema no lineal:
A0 + A1 = 2
A0 x0 + A1 x1 = 0
A0 x2 + A1 x2 = 2/3
0 1
A0 x3 + A1 x3 = 0
0 1
Podemos usar MATLAB con la instrucción solve, de la siguiente forma:
>> [a0,a1,x0,x1]=solve(’ao+a1=2’,’ao*x0+a1*x1=0’,’ao*x0^2+a1*x1^2=2/3’,’ao*x0^3+a1*x1^3=0’)
y obtenemos:
a0=[1 1], a1=[1 1], x0 = [-1/3*3^(1/2) 1/3*3^(1/2)], x1 = [1/3*3^(1/2) -1/3*3^(1/2)].
De donde se deduce inmediatamente la fórmula buscada (se pueden tomar bien sea los primeros
o los segundos valores de cada solución y se llega a la misma fórmula)
COMANDOS MATLAB PARA INTEGRACIÓN
Matlab cuanta con varias funciones incorporadas para integración numérica y simbólica.
Algunas de estas son:
• quad= Utiliza el método de cuadratura adaptativa de Simpson. La sintaxis de quad
incluye las formas:
quad(’funcion’,a,b): aproxima la integrar de la función entre a y b tomando como
tolerancia 1.e-6.
5
6. quad(’funcion’,a,b,tol): aproxima la integrar de la función entre a y b tomando como
tolerancia tol.
Para nuestro ejemplo digitamos quad(’exp(cos(x.^2))’,0,2) y obtenemos 3.22330605352029.
• trapz= Utiliza la regla trapezoidal para calcular la integral de una función. Se puede
utilizar de la siguiente forma:
trapz(X,Y): Aproxima el valor de la integral de Y con respecto a X.
Para nuestro ejemplo digitamos:
>> X=0:0.001:2;
>> Y=exp((cos(X)).^2);
>> aprox= trapz(X,Y)
Se obtiene 3.21021121961247
• int(f ) = Calcula de manera simbólica la integral de la función f (definida como una
cadena de caracteres). Para nuestro ejemplo no se puede usar pues la función con la
que estamos trabajando no tiene una integral indefinida, así que cambiemos de ejemplo:
Supongamos que queremos calcular:
Z
x2
dx
x6 − 8
en MATLAB digitamos: int(’x^2/(x^6-8)’) y obtenemos:
−1/12 ∗ 2ˆ(1/2) ∗ atanh(1/4 ∗ xˆ3 ∗ 2ˆ(1/2))
EJERCICIOS PROPUESTOS:
1. Realizar una función que permita aproximar
Zb Zd
I= f (x, y) dydx
a c
6
7. 1
empleando la regla se Simpson 3 compuesta.
2. Realizar una función que permita aproximar
d(x)
Zb Z
I= f (x, y) dydx
a c(x)
1
empleando la regla se Simpson 3 compuesta.
3. Realizar una función que permita generar una tabla de aproximaciones (Método de
Romberg) para
Zb
f (x) dx
a
4. Deducir la fórmula de cuadratura gaussiana de orden tres y hacer un programa que per-
mita usarla para calcular
Zb
f (x) dx
a
5. Encontrar los valores de A, B, C, D y E que hacen que la fórmula:
Z1
f (x) dx ≈ Af (0) + Bf (1/4) + Cf (1/2) + Df (3/4) + Ef (1)
0
sea exacta para todos los polinomio de grado menor o igual a cuatro.
7