Sie sind auf Seite 1von 15

2.

Integración numérica
Los métodos que estudiaremos se basan en la interpretación geométrica de
que la integral de una función de una (o de dos o más) variables se asocia (a
parte de un signo) al área (volumen o hipervolumen) que se encuentra “debajo”
de la función y que se encuentra limitada (limitado) por rectas verticales (o
planos o hiperplanos) definidos por los límites de integración y el eje de
abscisas (o planos o hiperplanos). Extenderemos este concepto también en el
caso de las integrales impropias.

Planteamos el caso genérico de la integración de una función f(x) continua en


el intervalo [a,b]:
b
I = ∫ f (x )dx .
a

2.1. El método de los trapecios

El procedimiento requiere la partición del intervalo [a,b] en un número n


arbitrario de subintervalos equiespaciados. Así pues, se consideran los n+1
puntos siguientes:
x0=a, x1, x2, x3, ..., xn-1, xn=b.

tales que
x i − x i −1 = h ∀i = 1,2,3,..., n .

Llamaremos a la constante h paso de integración.

El método considera que la curva a integrar se aproxima a la sucesión de


segmentos que pasan por los puntos

f(x0), f(x1), ..., f(xn).

Así pues, la integral I se aproxima a la suma de las áreas que quedan debajo
de cada segmento (xi-1,f(xi-1))–(xi,f(xi)) y que también están limitadas por las
rectas y=xi-1, y=xi y el eje de abscisas. El área de cada uno de esos trapecios
es
f (x i −1 ) + f (x i )
Ii = h.
2

Entonces la integral completa será la suma de todas estas áreas:

[f (x i −1 ) + f (x i )] = h f (x 0 ) + f (x n ) + 2∑ f (x i ) ,
n n −1
h n
I = ∑ Ii = ∑
i =1 2 i =1 2 i =1 

es decir

2-1
 f (x ) + f (x n ) n − 1 
I = h 0 + ∑ f (x i ) + ε .
 2 i =1 

− nh 3
El error cometido es ε = f ' ' (ξ ) , donde a<ξ<b.
12
En una versión modificada del método, se añade el término

h
[f (x −1 ) + f (x1 ) + f (xn −1 ) − f (xn +1 )] ,
24
11nh 5 4 )
el cual involucra dos puntos adicionales. Luego el error es ε = f (ξ ) .
720

2.2. El método de Simpson

El método anteriormente descrito sólo es exacto para polinomios de primer


grado. Resulta claro que se puede mejorar la precisión si, en cada
subsegmento no se ajusta la curva a una recta sino a otra función más
complicada. El método de Simpson se basa en realizar un ajuste a una
parábola.

Consideramos ahora una partición del intervalo [a,b] en un número par, n, de


subintervalos y agrupamos los puntos en ternas:

(a=x0,x1,x2) , (x2,x3,x4) , ... , (xn-2,xn-1,xn) ,

Para cada terna genérica (xi-1,xi,xi+1) podemos considerar el arco de parábola


que pasa por los puntos (xi-1,f(xi-1)), (xi,f(xi)) y (xi+1,f(xi+1)). Esta es la razón por la
que se deben organizar los datos en ternas: se puede ajustar una parábola de
manera que pase de forma exacta por los tres puntos mencionados.
Evaluaremos el área bajo cada parábola. Para simplificar, consideraremos tres
puntos equidistantes y consecutivos de la partición de b. Puesto que la
integración es invariante respecto a los desplazamientos, sin perder
generalidad integraremos en un intervalo [-h,h]. La parábola genérica que pasa
por los puntos (-h,f(-h)), (0,f(0)) y (h,f(h)) es y=ax2+bx+c. El área bajo ésta es

h
I i (− h,0, h ) = ∫ y dx =
h
3
(
2ah 2 + 6c . )
−h

Imponiendo la condición de paso por los tres puntos obtenemos

f (− h ) = ah 2 − bh + c

 f (0 ) = c
 f (h ) = ah 2 + bh + c

y de aquí surge la relación

2-2
2ah 2 + 6c = f (− h ) + 4f (0 ) + f (h ) .

Así obtenemos la fórmula genérica,

h
I i (− h,0, h ) = [f (− h ) + 4f (0) + f (h )] .
3

La integral buscada es la suma

n −1 n −1
I = ∑ I i (x i −1, x i , x i +1 ) = ∑ I i (x i − h, x i , x i + h ) .
i =1 i =1
n −1
h
I= ∑ [f (x i − h ) + 4f (x i ) + f (x i + h )].
3 i =1
(1)

Definitivamente,
h n −2 n −1

I= f (x0 ) + f (x n ) + 2∑ f (x i ) + 4∑ f (x i ) + ε . (2)
3 i = 2& i ≠ 2& 

− nh 5 4 )
El error cometido es ε = f (ξ ) , donde a<ξ<b.
90

Es de esperar que la regla de Simpson dé resultados exactos para polinomios


de primer y segundo grado. Esto es así. Sin embargo, sorprendentemente, la
regla da también un resultado exacto para polinomios de tercer grado. Esto es
debido a que el error de los sumatorios es proporcional a h4 de tal manera que
se corresponde con el cuarto término de una serie de Taylor (ver McCracken).
La precisión hasta los tres primeros términos queda asegurada y esto se
corresponde con un polinomio de tercer grado. Respecto a esto, se puede
pensar en el hecho de que, para integrar un polinomio de tercer grado, se
requieren un mínimo de 2 subintervalos. Esto implica integrar en dos tramos y
el resultado no tiene que ser equivalente al de ajustar a una parábola en todo el
intervalo y luego realizar una única integración.

2.3. La cuadratura de Romberg

Romberg describió un método basado en el hecho de que si se conocen los


dos resultados de la integración trapezoidal (o de Simpson) para intervalos de
anchura h i 2h, entonces el método de mejora de Richardson permite obtener
una mejor aproximación al valor de la integral que los dos valores iniciales. El
método es iterativo y se puede aplicar hasta conseguir la precisión que se
requiera. La información se puede encontrar, entre otros, en los libros de
Mathews y de Carnahan et al. Describiremos aquí la parte práctica del método.

El método se basa en construir una tabla triangular. Se empieza a la izquierda


calculando los resultados de la integral evaluada según el método de los
trapecios para 20=1, 21=2, 22=4, ..., 2J-1 y 2J intervalos equiespaciados.
Etiquetamos los elementos de esta columna cero como R(0,0), R(1,0), ...,

2-3
R(J,0). Los elementos de esta columna se pueden calcular a partir de las
siguientes fórmulas:

b−a
R (0,0 ) = [f (a ) + f (b )] (fórmula trapezoidal para un solo intervalo)
2
1 b − a 
k
b − a 2 −1 
R (k,0 ) = R (k − 1,0 ) + k −1 ∑ f  a + k i  para k=1,2,...,J.
2 2 i =1,3,5,...  2 

Aplicando esta formulación, es necesaria evaluar la función f(x) en un total de


2J+1 puntos. Se trata del caso óptimo, pues no se repiten evaluaciones de la
función en puntos repetidos.

Las otras columnas i del triángulo se calculan según la fórmula de mejora de


Richardson:

4 i R (k, i − 1) − R (k − 1, i − 1)
R (k, i ) = para i=1,2,...,J y k=i,i+1,...,J.
4i − 1

La tabla que se debe completar va a tener este aspecto:

R (0,0 )
R (1,0 ) R (1,1)
R (2,0 ) R (2,1) R (2,2)
M M M O
R (J ,0 ) R (J ,1) R (J ,2) L R (J, J )

El último elemento calculado, R(J,J) aporta la mejor aproximación a la integral.

De la misma manera que la primera columna de la tabla de Romberg se


corresponde con los resultados del método de los trapecios, la segunda nos da
el valor numérico que obtendríamos con el método de Simpson. La tercera
columna se corresponde con los resultados que provienen del método de
Boole.

2-4
2.4. La cuadratura de Gauss-Legendre

Los métodos anteriormente descritos obligan a definir una partición homogénea


en el intervalo de integración. La pregunta que se hizo C. F. Gauss era qué se
podría ganar si se eligieran adecuadamente dentro del intervalo los puntos de
evaluación de la función. La respuesta es clara: se puede ganar en precisión.

Sin perder generalidad cambiamos el intervalo de integración de [a,b] a [-1,1].


Esto obliga a definir una nueva variable

2 x − (b + a ) 1
z= ⇔ x= (b − a )z + 1 (b + a )
b−a 2 2

y la integral se transforma en

b +1
I = ∫ f (x )dx ⇒ I = ∫ g (z ) dz ,
a −1

siendo la nueva función

b−a b−a b+a


g (z ) = f z+ .
2  2 2 

La integral que se ha reescrito se va a evaluar como la suma óptima de unos


pesos (wi) por las imágenes de la función g(z) en unos puntos específicos (zi).
La nueva expresión constituye una generalización de las fórmulas de los
trapecios y de Simpson:

+1 n
I = ∫ g (z )dz = ∑ w i g (z i ) . (3)
−1 i =0

Esta ecuación así planteada requiere la evaluación de 2n+2 variables (los n+1
pesos y los correspondientes n+1 valores de abscisas).

Vamos a situar el problema para obtener el resultado exacto cuando f(x) y g(z)
son polinomios de grado 3 o inferior, integrando la ecuación de una recta. Esto
se puede conseguir eligiendo n=1, puesto que luego se dispone de 4
parámetros (w0, w1, z0 y z1) que se van a manipular para ajustar el término de
la derecha de (3) de forma exacta:

+1
I = ∫ g (z ) dz = w 0 g (z0 ) + w 1g (z1 ) .
−1

Si forzamos que la igualdad se cumpla para una base de los polinomios de


grado 3 o inferior, también se va a cumplir para cualquier polinomio de grado 3
o inferior. Cuando la función g(z) es α, αz, αz2 y αz3 (α es una constante
arbitraria) se obtienen las igualdades siguientes:

2-5
+1

∫ a dz = 2a = w a + w a 0 1 ⇒ w 0 + w1 = 2 
−1 
+1

∫ az dz = 0 = w az
−1
0 0 + w 1az1 ⇒ w 0 z0 + w 1z1 = 0 

+1 .
2 2
∫ a z dz = 3 a = w az + w 1az12 ⇒ w 0 z0 + w 1z1 =
2 2 2 2

3
0 0
−1
+1 
∫ az
3
dz = 0 = w 0 az03 + w 1az13 ⇒ w 0 z0 + w 1z1 = 0 
3 3

−1


La solución de este sistema de 4 ecuaciones con 4 incógnitas es

1 1
w 0 = w1 = 1 , z0 = − , z1 =
3 3

Así, la integral queda reducida a evaluar la expresión

+1
 1   1
∫ g (z )dz = g  − 3 
+ g  
 3.
−1   

Recordemos que esta expresión es exacta si la función g(z) es un polinomio de


grado 3 o inferior. En otras circunstancias, tanto mejor será esta aproximación
cuanto más se asemeje la función g(z) a un polinomio de esas características.

En realidad, si la función es un polinomio de grado 2n-1 se puede deducir qué


2n parámetros (n puntos y los correspondientes pesos) se deben emplear para
que la cuadratura sea exacta. En el libro de Carnahan se presenta una
demostración general de lo que aquí se acaba de comentar. Se demuestra que
los puntos {zi} coinciden con las raíces del polinomio de Legendre de grado n,
Pn(x). Estas raíces se distribuyen de forma simétrica respecto al origen. Los
pesos son

2
wi = .
( 2
i )
1 − z [P 'n (zi )]
2

En (3), para obtener la igualdad exacta se debe añadir a la derecha el residual

22n +1 (n!)
4
ε= f 2n ) (ξ ) donde -1<ξ<1.
(2n + 1)[(2n )!]3

La tabla siguiente muestra los pares de pesos y puntos que se pueden


considerar.

2-6
n wi zi
2 1.00000 00000 ±0.57735 02692
0.88888 88889 0.00000 00000
3
0.55555 55556 ±0.77459 66692
0.65214 51549 ±0.33998 10436
4
0.34785 48451 ±0.86113 63116
0.56888 88889 0.00000 00000
5 0.47862 86705 ±0.53846 93101
0.23692 68851 ±0.90617 98459
0.46791 39346 ±0.23861 91861
6 0.36076 15730 ±0.66120 93865
0.17132 44924 ±0.93246 95142
M M M
0.20257 82419 25561 0.00000 00000 00000
0.19843 14853 27111 ±0.20119 40939 97435
0.18616 10001 15562 ±0.39415 13470 77563
0.16626 92058 16994 ±0.57097 21726 08539
15
0.13957 06779 26154 ±0.72441 77313 60170
0.10715 92204 67172 ±0.84820 65834 10427
0.07036 60474 88108 ±0.93727 33924 00706
0.03075 32419 96117 ±0.98799 25180 20485
M M M

Se pueden encontrar más tablas de este tipo en el libro editado por Abramowitz
y Stegun.

2.5. Otros tipos de integración determinista

Existen otros métodos de integración, muchos de ellos adaptados a tipos


específicos de funciones. Una extensa relación de estos métodos se encuentra
en el libro editado por Abramowitz y Stegun. Aquí se reproducen las fórmulas
para dos casos adicionales más (integrales impropias) con el mismo estilo de
presentación que se encuentra en el libro.

1. Integrales con un núcleo exponencial:

∞ n

∫ e f (x )dx = ∑ w i f (x i ) + Rn
−x

0 i =1

Polinomios ortogonales relacionados: los de Laguerre de orden n, Ln(x).


Abscisas: xi es la i-éssima raíz del polinomio.

Pesos: w i =
(n!) x i
2

.
(n + 1)2 [Ln +1 (x i )]2
Resto: R n =
(n!)2 f 2n ) (ξ ) donde 0<ξ<∞.
(2n )!

2-7
2. Integrales con un núcleo exponencial gaussiano:

∞ n

∫ e f (x )dx = ∑ w i f (x i ) + Rn
2
−x

−∞ i =1

Polinomios ortogonales relacionados: los de Hermite de grado n, Hn(x).


Abscisas: xi es la i-éssima raíz del polinomio.
2 n −1 n! π
Pesos: w i = 2 .
n [H n −1 (x i )]
2

n! π 2n )
Resto: R n = f (ξ ) donde -∞<ξ<∞.
2 n (2n )!

Consultar las fotocopias adjuntas para obtener los valores numéricos de los
pesos y las raíces para los dos casos.

2.6. Métodos de Montecarlo

No trataremos estos métodos aquí. Se remite el lector al libro editado por


Andrés y Bertrán.

Ejercicios

1. Justificar el paso de la ecuación (1) a la (2).

2. Evalúa, con el método de Simpson el valor de la integral siguiente:


1
1
I = ∫ x 3 dx = . ¿Qué valor de h crees que es recomendable usar en este caso
0
4
particular?

3. Por el método de los trapecios, la regla de Simpson y la cuadratura de


Gauss-Legendre, evalúa alguna de las integrales siguientes:

π 1 −x2
1
I = ∫ sen(x )dx = 1
2π −∫1
, I= e 2
dx ≈ 0.6827 .
0

Compara la precisión de cada método y estúdiala también en función de la


anchura h del subintervalo.

4. Evaluar las integrales anteriores con el método de Romberg. Comprobar


como se va ganando precisión al ir aumentado el número de filas calculadas en
la tabla. Observar como se mejora la precisión respecto al último elemento

2-8
calculado de las dos primeras columnas (valores obtenidos con las reglas del
trapecio y de Simpson para 2J puntos).

5. Elaborar un programa de integración por el método de Romberg de tal


manera que se construya una tabla lo suficientemente grande como para
conseguir una precisión preestablecida, es decir cuando la diferencia entre dos
elementos R(J,J) y R(J-1,J-1) sea igual a un parámetro de tolerancia aportado
por el usuario (por ejemplo 10-8). Para conseguir esto de forma eficiente lo que
se puede hacer es ir construyendo la tabla triangular de forma progresiva:
primero se calculan los términos siguientes:

R (0,0 )
R (1,0 ) R (1,1)

y se comparan los valores de R(0,0) y de R(1,1). Si no se cumple la condición


de tolerancia, se prosigue calculando la siguiente fila:

R (0,0 )
R (1,0 ) R (1,1)
R (2,0 ) R (2,1) R (2,2)

y se vuelve a comprobar si se ha llegado al criterio de convergencia


comparando los elementos R(1,1) y R(2,2). En caso contrario se van añadiendo
filas de forma progresiva, hasta que se cumpla la condición requerida.

2-9
Programas de integración

*---------------------------------------------------------------------
* Dada una funcion FORTRAN f(x)continua en el intervalo [a,b]
* esta rutina calcula la integral entre a y b por el metodo de Simpson
*---------------------------------------------------------------------
real*8 function simpson(xmin,xmax,n)
implicit double precision (a-h,o-z)
if (mod(n,2).ne.0) STOP ' Hace falta n par.'

h=(xmax-xmin)/n
fmimpar=0.0d0
do j=1,n-1,2
fmimpar=fmimpar+f(xmin+h*j)
end do
fmpar=0.0d0
do j=2,n-2,2
fmpar=fmpar+f(xmin+h*j)
end do
simpson=(f(xmin)+f(xmax)+fmimpar*4+fmpar*2)*h/3
end
*--------------------------------------------------------------------

2-10
!---------------------------------------------------------------------
¡ Programa en FORTRAN 90
! Integracion por el metodo de Romberg
! En general, la función f(x) debe ser aportada por el usuario
! Este programa tambien muestra la tabla que se va generando
! Aqui se evalua el ln(137.2) como la integral de 1 a 137.2 de la
! funcion 1/x. El resultado es 4.92143969305.
! Para ahorrar memoria solo se trabaja con dos columnas de la tabla.
!---------------------------------------------------------------------
PROGRAM ROMBERG1
implicit double precision (a-h,o-z)

allocatable :: R(:,:) ! Tabla de Romberg

! Intervalo de integracion
a=1.0d0
b=137.2

ba=b-a

! Rango de subdivisiones recursivas a realizar


J=20 ! Este parametro puede ser cambiado
n=2**J ! Número de intervalos

! Para ahorrar espacio, solo reserva dos columnas


! El numero de puntos totales evaluados de f(x) sera de n+1
allocate(R(0:J,0:1))

! Cálculo de la primera columna (K=0)


R(0,0)= ba/2*(f(b)+f(a)) ! Regla trapezoidal de 2**0=1 intervalos
do k=1,J
Sum=0.0d0
do i=1,2**k-1,2
Sum=Sum+f(a+ba/2**k*i)
end do
! Regla trapezoidal de 2**k intervalos:
R(k,0)=(R(k-1,0)+ba/(2**(k-1))*Sum)/2
end do

write(*,*) (R(k,0),k=0,J)

! Mejora de Richardson. Obtencion de la segunda columna (Simpson)


(K=1)
do k=1,J
R(k,1)=(4*R(k,0)-R(k-1,0))/3
end do

write(*,*) (R(k,1),k=1,J)

! Pasa la segunda columna a la primera


R(1:J,0)=R(1:J,1)

! Proceso iterativo de Romberg hasta completar la tabla


do i=2,J ! Nueva columa i

do k=i,J
R(k,1)=(4**i * R(k,0)-R(k-1,0)) / (4**i -1)
end do

R(i:J,0)=R(i:J,1) ! Transferencia

2-11
write(*,*) (R(k,0),k=i,J)

end do

write(*,'(" Resultado:",g20.12)') R(J,0)

END
!---------------------------------------------------------------------
!---------------------------------------------------------------------
double precision function f(x)
double precision x
f=1/x
END
!---------------------------------------------------------------------

2-12
!---------------------------------------------------------------------
! Integracion por el metodo de Romberg.
! En general, la funcion f(x) debe ser aportada por el usuario.
! Este programa termina cuando dos aproximaciones sucesivas de la
! integral son menores que un parametro de error predeterminado.
! Se muestra la tabla que se va generando y a la izquierda aparecen
! los valores de precision que se van consiguiendo.
! Solo se guardan en memoria los elementos necesarios de la tabla
! que se requieren para hacer los calculos.
!---------------------------------------------------------------------
PROGRAM ROMBERG2
implicit double precision (a-h,o-z)
parameter (maxcol=999)

allocatable :: R(:,:) ! Tabla de Romberg

! Intervalo de integracion
a=1.0d0
b=137.2

ba=b-a

! Precision requerida
epsilon=1.0d-10

! Rango de subdivisiones recursivas a realizar

! Para ahorrar espacio, solo reserva dos filas de la tabla


allocate(R(0:1,0:maxcol))

! Cálculo del primer elemento


R(0,0)= ba/2*(f(b)+f(a)) ! Regla trapezoidal para 2**0=1 intervalos

write(*,*) 0,R(0,0)," :",R(0,0)

k=0
precis=epsilon*10
do while (precis>epsilon) ! Iteraciones
k=k+1 ! Contador de filas/columnas
if (k>maxcol) stop "ERROR: Hace falta redimensionar."

! Nuevo elemento de la primera columna


Sum=0.0d0
do i=1,2**k-1,2
Sum=Sum+f(a+ba/2**k*i)
end do
R(1,0)=(R(0,0)+ba/(2**(k-1))*Sum)/2 ! Regla trapezoidal de 2**k
intervalos

! Elementos hacia la derecha calculados segun la


! extrapolacion de Richardson
do j=1,k
R(1,j)=(4**j * R(1,j-1)-R(0,j-1)) / (4**j - 1)
end do

precis=abs(R(1,k)-R(0,k-1))

write(*,*) k,precis," :",R(1,0:k)

! Transferencia
R(0,0:k)=R(1,0:k)

2-13
end do

write(*,'(" Resultado:",g20.12)') R(1,k)


write(*,'(" Precision requerida:",g14.6)') epsilon
write(*,'(" Numero de filas calculadas:",i3)') k

END
!---------------------------------------------------------------------
!---------------------------------------------------------------------
double precision function f(x)
double precision x
f=1/x
END
!---------------------------------------------------------------------

2-14
*--------------------------------------------------------------------
* Cuadratura de Gauss-Legendre.
* Se utiliza la formula de 15 puntos, la cual da resultados
* exactos para polinomios de grado 29 o inferiores.
* Para cada dato z se consideran los puntos –z y +z
* El usuario debe proveer la funcion a integrar f(x)
* en el intervalo [a,b]
*--------------------------------------------------------------------
double precision function fmgau(a,b)
implicit double precision (a-h,o-z)
dimension z(8),w(8)

data z/ 0.000000000000000d0 , 0.201194093997435d0 ,


+ 0.394151347077563d0 , 0.570972172608539d0 ,
+ 0.724417731360170d0 , 0.848206583410427d0 ,
+ 0.937273392400706d0 , 0.987992518020485d0 /

data w/ 0.202578241925561d0 , 0.198431485327111d0 ,


+ 0.186161000115562d0 , 0.166269205816994d0 ,
+ 0.139570677926154d0 , 0.107159220467172d0 ,
+ 0.070366047488108d0 , 0.030753241996117d0 /

ab=(a+b)/2
ba=(b-a)/2

fmgau=w(1)*f(ba*z(1)+ab)
do i=2,8
fmgau=fmgau+w(i)*(f(ba*z(i)+ab)+f(-ba*z(i)+ab)
end do
fmgau=fmgau*ba

end
*--------------------------------------------------------------------

2-15

Das könnte Ihnen auch gefallen