You are on page 1of 7

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
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
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 2X ⎥

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
aprox=aprox+2*f(x);
end
aprox=(h/3)*aprox;

Al aproximar la integral anterior digitamos simpson(’exp(cos(x^2))’,0,2) y obtenemos


3.36817724255319, empleando 100 subintervalos obtenemos 3.16558949594821 al digitar
simcom(’exp(cos(x^2))’,0,2,100).

COEFICIENTES INDETERMINADOS Y CUADRATURA GAUSSIANA:

En MATLAB también podemos encontrar los coeficientes y/o nodos de fórmulas de coefi-
cientes indeterminados o de Cuadratura Gaussiana.

En el primer caso, simplemente se requiere formular el sistema de ecuaciones lineales y re-


solverlo mediante alguno de los métodos explicados en guias anteriores. Por ejemplo, supong-
amos que deseamos encontrar los coeficientes A, B y C que hacen que la fórmula:
Z 1
f (x)dx ≈ Af (0) + Bf (1/2) + Cf (1)
0

sea exacta para todos los polinomios de grado menor o igual que dos. Trabajando con los
© ª
polinomios básicos 1, x, x2 obtenemos el sistema:

1 = A+B+C
1 1
= B+C
2 2
1 1
= B+C
3 4

que puede ser resuelto en MATLAB mediante las instrucciones:

>> M = [1 1 1; 0 1/2 1; 0 1/4 1];


>> b = [1 1/2 1/3]’;
>> X = inv(M)*b

4
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 x20 + A1 x21 = 2/3

A0 x30 + A1 x31 = 0

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
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
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.

You might also like