Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integracion Uniandes PDF
Integracion Uniandes PDF
Integración Numérica
En algunos casos las integrales pueden ser aún mas complejas en estadı́stica,
magnetismo, sismologı́a, mecánica cuántica, biologı́a, etc. Otro ejemplo:
s Zθm
8l dθ
T = √ (3.2)
g cosθ − cosθm
0
para un péndulo. Este tipo de integrales también puede ser difı́cil de resolver
con base en funciones elementales. Entonces, que se puede hacer al enfrentarse
a este tipo de integrales?
Existen dos posibles pasos a seguir si no se puede llegar a una solución
analı́tica de alguna integral.
1. Hacer algunas aproximaciones, haciendo algún parametetro pequeño, análi-
sis asintótico, etc.
2. Hacer la integración numérica
Ambos pasos requieren de un poco de arte, pero en este texto estamos intere-
sados en el segundo punto. Por qué decimos arte? Que pasa si se quiere hacer
una integración numérica en Matlab? Existen dos funciones (quad y quad8, pe-
ro éstas solo pueden trabajar con integración sobre intervalos finitos y además
requieren que la función se comporte de cierta manera (que no haya singulari-
dades, que la función se diferenciable, etc.). En este texto se discutirá este tipo
92 Capı́tulo 3. Integración Numérica
Zb N
X
f (x)dx ≈ f (xi )wi , (3.4)
a i=1
! Start integrating
x = a
I = I + fun(x)/2.d0
do j = 1,N-2
x = x+h
I = I + fun(x)
enddo
x = b
I = I + fun(x)/2.d0
Trapezoidal Simpson
a b a b
Figura 3.2: Aproximación de una función f (x) a ser integrada (curva roja)
usando la regla trapezoidal (lineas rectas) y la regla de Simpson (interpolan-
te cuadrático), ambos con lineas negras. Note que la función f (x) es dividida
en N puntos, y la aproximación se hace en sub-intervalos (i ± 1) en la figura.
if (mod(N,2)==0) then
write(6,*) ’N must be odd, one point added’
M = N+1
else
M = N
endif
! Start integrating
x = a
I = I + fun(x)
do j = 1,(M)/2-1
x = x+h
I = I + 4.d0*fun(x)
x = x+h
I = I + 2.d0*fun(x)
enddo
x = x+h
I = I + 4.d0*fun(x)
x = x+h
I = I + fun(x)
[b−a]5 εs
Simpson εs = N4 f (4) s = f
Zb Zb N
X
f (x)dx = W (x)g(x)dx ≈ wi g(xi ) (3.12)
a a i=1
h Th ε
2 2.85... 0.28
1 3.109 ... 0.032
0.5 3.14159 ... 3,5 × 10−08
0.25 3.1415926535897953 ... 5,3 × 10−15
donde se puede observar [Figura 3.5] que la función cae como exp(|u|). Después
de un poco de algebra se obtiene
Z∞ Z∞
dx du
= (3.16)
1 + x2 cosh u
−∞ −∞
1.6
1.4 (1+3x2)/cosh(x+x3)
1.2
1.0
0.8
0.6
1/cosh(x)
0.4 1/(1+x2)
0.2
0.0
0 1 2 3 4 5
x
para obtener
Z∞ Z∞
dx (1 + 3x2 )
= du (3.18)
1 + x2 cosh(u + u3 )
−∞ −∞
3
La función ahora decae rápidamente (et ) lo que quiere decir que se requieren
pocos términos y los lı́mites de integración no tienen que ir hasta ∞, sino hasta
valores pequeños.
Una observación final, en el caso que los lı́mites de integración sean por
ejemplo (a, ∞), se busca un mapeo de tal manera que el punto x = a sea −∞.
Esto se puede lograr con la siguiente relación x = a+exp(γu), dx = γexp(γu)du
, para un valor apropiado de γ > 0.
Cuando la función f (x) posee complejidades en algún intervalo finito antes
de entrar en un decaimiento monotónico, se recomienda realizar la integración en
dos partes; la porción finita usando un método standard, y la cola del intervalo
semi.infinito a través de un mapeo descrito arriba.
n = 10000
do j = 1,n
call random_number(x)
call random_number(y)
! Make x and y from -1 to 1
x = x*2.0 - 1.0
y = y*2.0 - 1.0
! Calculate radius
rad = sqrt(x**2 + y**2)
! Check if in or out
if (rad > 1.0) then
Nbox = Nbox + 1
else
Npond = Npond + 1
endif
enddo
! Calculate area
Apond = real(Npond)/(real(Npond+Nbox)) * Abox
print *, ’Area of pond = ’, Apond
...
end program pond_mc
102 Capı́tulo 3. Integración Numérica
N = 10 N = 100
+1
Y axis
-1
N = 1000 N = 10000
+1
Y axis
-1
-1 0 +1 -1 0 +1
X axis X axis
Figura 3.4: Integración de Monte Carlo utilizando la implementación Stone Th-
rowing.
elección de N ?
3.7
Aproximación a π
3.6 Integración de MonteCarlo
Valor de la Integral
3.5
3.4
3.3
3.2
3.1
Zb N
b−aX
I= f (x)dx ≈ f (xi ) (3.20)
N i=1
a
Cuadro 3.3: Resultados de integración Monte Carlo para la ecuación 3.22 reali-
zando 100 realizaciones para cada uno de los valores N que se muestran en la
tabla. Se muestra el valor estimado de la integral promedio y el resultado de
máximo y mı́nimo de las 100 realizaciones.
implicit none
integer :: n, j
real(8) :: x, y
real(8) :: integral
real(8), external :: fun1
n = 10000
integral = 0.d0
do j = 1,n
call random_number(x)
call random_number(y)
integral = integral + fun1(x,y)
enddo
integral = integral/dble(n)
print *, n, integral
implicit none
real(8) :: x, y
real(8) :: z
z = exp( (x+y)**2 )