Beruflich Dokumente
Kultur Dokumente
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.
tales que
x i − x i −1 = h ∀i = 1,2,3,..., n .
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
[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
h
I i (− h,0, h ) = ∫ y dx =
h
3
(
2ah 2 + 6c . )
−h
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 ) .
h
I i (− h,0, h ) = [f (− h ) + 4f (0) + f (h )] .
3
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
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
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
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 )
2-4
2.4. La cuadratura de Gauss-Legendre
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
+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
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
1 1
w 0 = w1 = 1 , z0 = − , z1 =
3 3
+1
1 1
∫ g (z )dz = g − 3
+ g
3.
−1
2
wi = .
( 2
i )
1 − z [P 'n (zi )]
2
22n +1 (n!)
4
ε= f 2n ) (ξ ) donde -1<ξ<1.
(2n + 1)[(2n )!]3
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.
∞ n
∫ e f (x )dx = ∑ w i f (x i ) + Rn
−x
0 i =1
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
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.
Ejercicios
π 1 −x2
1
I = ∫ sen(x )dx = 1
2π −∫1
, I= e 2
dx ≈ 0.6827 .
0
2-8
calculado de las dos primeras columnas (valores obtenidos con las reglas del
trapecio y de Simpson para 2J puntos).
R (0,0 )
R (1,0 ) R (1,1)
R (0,0 )
R (1,0 ) R (1,1)
R (2,0 ) R (2,1) R (2,2)
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)
! Intervalo de integracion
a=1.0d0
b=137.2
ba=b-a
write(*,*) (R(k,0),k=0,J)
write(*,*) (R(k,1),k=1,J)
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
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)
! Intervalo de integracion
a=1.0d0
b=137.2
ba=b-a
! Precision requerida
epsilon=1.0d-10
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."
precis=abs(R(1,k)-R(0,k-1))
! Transferencia
R(0,0:k)=R(1,0:k)
2-13
end do
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)
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