Problema
Supongamos que se quiere calcular la integral definida:
\[\begin{align}
I = \int_a^b{f(x)dx}
\end{align}\]
Se parte de la definición de esperanza, valor esperado o media de una variable aleatoria \(x\) . Si \(x\) es una variable aleatoria y \(f(x)\) su función de densidad de probabilidad, entonces:
\[\begin{align}
E(x) = \int_{-\infty}^\infty xf(x)dx
\end{align}\]
Además:
\[\begin{align}
E(g(x)) = \int_{-\infty}^\infty g(x)f(x)dx
\end{align}\]
Por ejemplo, si \(g(x)=x^2\) , entonces:
\[\begin{align}
E(x^2) = \int_{-\infty}^\infty x^2f(x)dx
\end{align}\]
Ahora, recuerde que, si \(x\) es una variable aleatoria que distribuye uniforme entre \(0\) y \(1\) , esto es:
\[\begin{align}
x \sim U(0,1)
\end{align}\]
Entonces:
\[\begin{align}
f(x) = \left\{ \begin{array}{lcc} 1 & si & 0 \leq x \leq 1 \\ \\ 0 & dlc \\ \end{array} \right.
\end{align}\]
Entonces,
\[\begin{align}
E(g(x))&= \int_0^1 g(x)*1~ dx\\
\\
E(g(x))&= \int_0^1 g(x) dx
\end{align}\]
Es necesario tener en cuenta que:
\[\begin{align}
E(x)&= \mu_x\\
\hat{\mu_x}&=\bar{x}\\
\bar{x} &= \frac{\sum_{i=1}^n xi}{n}
\end{align}\]
Por lo tanto:
\[\begin{align}
E(g(x)) &= \mu_{g(x)}\\
\hat{\mu}_{g(x)}&=\bar{g(x)}\\
\bar{g(x)} &= \frac{\sum_{i=1}^n g(xi)}{n}
\end{align}\]
Por lo tanto:
\[\begin{align}
\int_0^1 g(x)dx &= \frac{\sum_{i=1}^n g(xi)}{n}
\end{align}\]
Ejemplo 1:
Resuelva \[\begin{align}
\int_0^1 xe^x~dx
\end{align}\]
De forma exacta y aproxime la solución usando números aleatorios.
De manera exacta usamos integración por partes. Recuerde LIATE y que:
\[\begin{align}
\int u~dv &= uv - \int v~du
\end{align}\]
Por lo tanto:
\[\begin{align}
u&=x \rightarrow du = dx\\
\\
dv &= e^x~dx \rightarrow v=e^x
\end{align}\]
Aplicando la ecuación de integración por partes:
\[\begin{align}
\int_0^1 xe^x~dx &= xe^x - \int_0^1 e^x~dx\\
\\
\int_0^1 xe^x~dx &= xe^x -e^x \Big|_0^1\\
\\
xe^x -e^x \Big|_0^1 &=\left[ 1*e^1-e^1 \right] - \left[ 0*e^0-e^0 \right]\\
\\
\int_0^1 xe^x~dx &= 1
\end{align}\]
Ahora se realiza la aproximación mediante números pseudoaleatorios. Se generan \(20\) números aleatorios como sigue:
Warning: package 'knitr' was built under R version 4.4.2
0.2875775
0.7883051
0.4089769
0.8830174
0.9404673
0.0455565
0.5281055
0.8924190
0.5514350
0.4566147
0.9568333
0.4533342
0.6775706
0.5726334
0.1029247
0.8998250
0.2460877
0.0420595
0.3279207
0.9545036
Se evalúan los números aleatorios en \(g(x) = xe^x\) , obteniendo lo siguiente:
0.2875775
0.3833966
0.7883051
1.7340073
0.4089769
0.6156235
0.8830174
2.1352998
0.9404673
2.4087041
0.0455565
0.0476799
0.5281055
0.8955173
0.8924190
2.1784194
0.5514350
0.9571489
0.4566147
0.7208671
0.9568333
2.4910575
0.4533342
0.7133439
0.6775706
1.3341964
0.5726334
1.0152388
0.1029247
0.1140825
0.8998250
2.2128250
0.2460877
0.3147491
0.0420595
0.0438663
0.3279207
0.4551798
0.9545036
2.4792097
Si se realiza la suma de \(g(x_i)\) se obtiene:
\[
\sum_1^{20} g(x_i) = 23.25041
\]
Por lo tanto:
\[
\frac{\sum_1^{20}g(x_i)} {n} = \frac{23.25041}{20} =1.16
\]
Obteniendo una buena aproximación para
\[\int_0^1 xe^x \approx \frac{\sum_1^{20}f(x_i)} {n} =1.16 \]
Aproximación en ´´R´´
#Generando aleatorios
set.seed (123 )
numeros <- runif (1000 )
#Evaluando en g(x)
evaluacion <- numeros * exp (numeros)
#Aproximación
aproximacion <- mean (evaluacion)
aproximacion
Ejemplo 2:
Resuelva \[\begin{align}
\int_0^1 xln(x)~dx
\end{align}\]
De forma exacta y aproxime la solución usando números aleatorios.
De manera exacta usamos integración por partes. Recuerde LIATE y que:
\[\begin{align}
\int u~dv &= uv - \int v~du
\end{align}\]
Por lo tanto:
\[\begin{align}
u&= ln (x) \rightarrow du = \frac{1}{x} dx\\
\\
dv &= x~dx \rightarrow v=\frac{x^2}{2}
\end{align}\]
Aplicando la ecuación de integración por partes:
\[\begin{align}
\int_0^1 xln(x)~dx &= ln(x)\frac{x^2}{2} - \int_0^1 \frac{x^2}{2} \frac{1}{x}~dx\\
\\
\int_0^1 xln(x)~dx &= ln(x)\frac{x^2}{2} - \frac{1}{2}\int_0^1 x~dx\\
\\
\int_0^1 xln(x)~dx &= ln(x) \frac{x^2}{2} - \frac{x^2}{4} \Big|_0^1\\
\\
\int_0^1 xln(x)~dx &= \left[ ln(1) \frac{1^2}{2} - \frac{1^2}{4} \right] - \left[ ln(0) \frac{0^2}{2} - \frac{0^2}{4} \right]\\
\\
\int_0^1 xln(x)~dx &= - \frac{1}{4}
\end{align}\]
Ahora se realiza la aproximación mediante números pseudoaleatorios. Se generan \(20\) números aleatorios como sigue:
0.2875775
0.7883051
0.4089769
0.8830174
0.9404673
0.0455565
0.5281055
0.8924190
0.5514350
0.4566147
0.9568333
0.4533342
0.6775706
0.5726334
0.1029247
0.8998250
0.2460877
0.0420595
0.3279207
0.9545036
Se evalúan los números aleatorios en \(g(x) = xln(x)\) , obteniendo lo siguiente:
0.2875775
-0.3583972
0.7883051
-0.1875142
0.4089769
-0.3656649
0.8830174
-0.1098565
0.9404673
-0.0577244
0.0455565
-0.1407150
0.5281055
-0.3371738
0.8924190
-0.1015747
0.5514350
-0.3282314
0.4566147
-0.3579473
0.9568333
-0.0422213
0.4533342
-0.3586443
0.6775706
-0.2637386
0.5726334
-0.3192486
0.1029247
-0.2340258
0.8998250
-0.0949810
0.2460877
-0.3450315
0.0420595
-0.1332727
0.3279207
-0.3656262
0.9545036
-0.0444453
Si se realiza la suma de \(f(x_i)\) se obtiene:
\[
\sum_1^{20} g(x_i) = -4.546035
\]
Por lo tanto:
\[
\frac{\sum_1^{20}g(x_i)} {n} = \frac{-4.546035}{20} =-0.2273017
\]
Obteniendo una buena aproximación para
\[\int_0^1 xln(x) \approx \frac{\sum_1^{20}g(x_i)} {n} =-0.2273017\]
Aproximación en ´´R´´
#Generando aleatorios
set.seed (123 )
numeros <- runif (1000 )
#Evaluando en g(x)
evaluacion <- numeros * log (numeros)
#Aproximación
aproximacion <- mean (evaluacion)
aproximacion
Caso límites de integración diferentes a 0, 1
En el caso en que los límites de integración \(a \neq 0\) y \(b \neq 1\) se puede aplicar la corrección siguiente para la aproximación:
\[\begin{align}
\int_a^b g(x)~dx \approx (b-a) \frac{\sum_1^n g(x_i)}{n}
\end{align}\]
Ejemplo 1:
Resuelva \[\begin{align}
\int_2^5 xe^x~dx
\end{align}\]
De forma exacta y aproxime la solución usando números aleatorios.
De manera exacta usamos integración por partes. Recuerde LIATE y que:
\[\begin{align}
\int u~dv &= uv - \int v~du
\end{align}\]
Por lo tanto:
\[\begin{align}
u&=x \rightarrow du = dx\\
\\
dv &= e^x~dx \rightarrow v=e^x
\end{align}\]
Aplicando la ecuación de integración por partes:
\[\begin{align}
\int_2^5 xe^x~dx &= xe^x - \int_2^5 e^x~dx\\
\\
\int_2^5 xe^x~dx &= xe^x -e^x \Big|_2^5\\
\\
xe^x -e^x \Big|_2^5 &=\left[ 5*e^5-e^5 \right] - \left[ 2*e^2-e^2 \right]\\
\\
\int_2^5 xe^x~dx &= 4e^5-e^2 = 578.263
\end{align}\]
Ahora se realiza la aproximación mediante números pseudoaleatorios. Se generan \(20\) números aleatorios, entre \(a=2\) y \(b=5\) como sigue:
2.862733
4.364915
3.226931
4.649052
4.821402
2.136669
3.584316
4.677257
3.654305
3.369844
4.870500
3.360002
4.032712
3.717900
2.308774
4.699475
2.738263
2.126179
2.983762
4.863511
Se evalúan los números aleatorios en \(g(x) = xe^x\) , obteniendo lo siguiente:
2.862733
50.12446
4.364915
343.26894
3.226931
81.32571
4.649052
485.76044
4.821402
598.52397
2.136669
18.10011
3.584316
129.13834
4.677257
502.68764
3.654305
141.20475
3.369844
97.97484
4.870500
635.04550
3.360002
96.73199
4.032712
227.50017
3.717900
153.09509
2.308774
23.23107
4.699475
516.42274
2.738263
42.33385
2.126179
17.82327
2.983762
58.96518
4.863511
629.71765
Si se realiza la suma de \(g(x_i)\) se obtiene:
\[
\sum_1^{20} g(x_i) = 4848.976
\]
Por lo tanto:
\[
\frac{\sum_1^{20}g(x_i)} {n} = \frac{4848.976}{20} =242.4488
\]
Obteniendo una buena aproximación para
\[\int_2^5 xe^x \approx (b-a) \frac{\sum_1^{20}g(x_i)} {n} =727.3464\]
Aproximación en ´´R´´
#Generando aleatorios
set.seed (123 )
a <- 2
b <- 5
numeros <- runif (1000 , min = a, max= b)
#Evaluando en g(x)
evaluacion <- numeros * exp (numeros)
#Aproximación
aproximacion <- (b- a)* mean (evaluacion)
aproximacion