Para el desarrollo de este ejercicio, se van a generar 10000 datos para las coordenadas X & Y de los puntos que serán distribuidos uniformemente (equiprobable) en el cuadrado de área 1. Es importante tener en cuenta que el resultado de la estimación depende del número de datos utilizados para la misma, es por ello por lo que se generaran más puntos de los solicitados en el ejercicio.

Recordemos que la fórmula de distribución uniforme es:

X=(b-a)*F(X)+a

Para generar una variable aleatoria uniforme utilizamos el siguiente Código en RStudio:

Cordx<-runif(10000,0,1)
Cordy<-runif(10000,0,1)

Se procede a graficar los puntos generados mediante un diagrama de dispersión (X,Y)

Como se puede observar en la anterior gráfica, todos los puntos generados representan un cuadrado de area 1. Uno de los datos dados en el ejercicio es el area del cirulo, la cual equivale a π/4.

Recordemos que el area de un cirulo se calcula mediante la formula A=π*R^2, por lo tanto…

Acirculo=π*R^2 = π*(0.5)^2
Acirculo=π*R^2=π*(0.25)
Acirculo=π*R^2=π/4

Posteriormente, se procede a calcular la distancia desde la coordenada (0.5,0.5) “la cual sería el centro de nuestro circulo” a cada uno de los puntos generados mediante la distribución uniforme, con el fin de identificar si la distancia es menor a R^2 o 0.25. Para ello se utiliza el siguiente código:

Distancia<-function(x,y){d<-(x-0.5)**2+(y-0.5)**2
                      return(d)}

Distancia<-distancia(Cordx,Cordy)

Luego, se debe evaluar si esa distancia es menor a 0.25, lo que significa que el punto se encuentra adentro del cirulo, de lo contrario el punto estará situado por fuera del círculo, pero adentro del cuadrado. Para ello, se utiliza el siguiente código:

menor_R2<-function(x){cond<-ifelse(Distancia<0.25,1,0)
                      return(cond)}
Menor_R2<-menor_R2(Distancia)

Con el anterior código creamos una variable que da valor de 1 si esa distancia es menor a 0.25 y 0 de lo contrario, para después sumar los valores de 1 y obtener el número de puntos que se encuentran situados adentro del círculo. Para ello se utiliza la siguiente formula:

Yes<-sum(Datos$Menor_R2)

El total de puntos que se encuentran ubicados por dentro del circulo son:

## [1] 7822

Después se determina a que porcentaje equivalen la cantidad de puntos que se encuentran en el circulo sobre el total de puntos generados. Para ello se utilizó la siguiente formula:

% puntos en el circulo= yes/n, donde n son los 10000 puntos generados a partir de la distribución uniforme.

Finalmente, se hace la siguiente relación y se despeja π:

Acirculo=π/4
π/4= % puntos en el circulo

Obteniendo un valor aproximado para π de:

## [1] 3.141593

Finalmente, se puede observar un valor aproximado (estimado) de pi mediante la técnica de simulación de Montecarlo.

Optimizando el valor de Pi, se puede decir que para una aproximación más exacta se necesitan aproximadamente 7853 puntos ubicados en el interior de la circunferencia.