PROBLEMA 1

Estimación del valor de π

  • Genere n coordenadas x: X1, . . . , Xn. Utilice la distribución uniforme con valor mínimo de 0 y valor máximo de 1. La distribución uniforme genera variables aleatorias que tienen la misma probabilidad de venir de cualquier parte del intervalo (0,1).

  • Genere 1000 coordenadas y: Y1,…,Yn, utilizando nuevamente la distribución uniforme con valor mínimo de 0 y valor máximo de 1.

  • Cada punto (Xi,Yi)se encuentra dentro del círculo si su distancia desde el centro (0.5,0.5)es menor a 0.5. Para cada par (Xi,Yi)determine si la distancia desde el centro es menor a 0.5. Esto último se puede realizar al calcular el valor (Xi−0.5)2+(Yi−0.5)2, que es el cuadrado de la distancia, y al determinar si es menor que 0.25.

  • ¿Cuántos de los puntos están dentro del círculo? ¿Cuál es su estimación de π?

#DISTRIBUCION UNIFORME
x = runif(1000,0,1)
y = runif(1000,0,1)
distancias =  numeric()
#DISTANCIA DESDE EL CENTRO
for (i in 1:length(x)){
  distancias[i] = (x[i]-0.5)^2 + (y[i]-0.5)^2
}

puntos = ifelse(distancias < 0.25, 1, 0) 

Total de puntos dentro del circulo:

sum(puntos)
## [1] 800

Estimacion de PI:

4 * sum(puntos)/length(x)
## [1] 3.2

Utilizando 10000 puntos:

x = runif(10000,0,1)
y = runif(10000,0,1)
distancias =  numeric()
for (i in 1:length(x)){
  distancias[i] = (x[i]-0.5)^2 + (y[i]-0.5)^2
}
puntos = ifelse(distancias < 0.25, 1, 0) 

print(paste("Suma: ",sum(puntos)))
## [1] "Suma:  7917"
print(paste("Estimacion: ",4 * sum(puntos)/length(x)))
## [1] "Estimacion:  3.1668"

Utilizando 100000

x = runif(100000,0,1)
y = runif(100000,0,1)
distancias =  numeric()
for (i in 1:length(x)){
  distancias[i] = (x[i]-0.5)^2 + (y[i]-0.5)^2
}
puntos = ifelse(distancias < 0.25, 1, 0) 

print(paste("Suma: ",sum(puntos)))
## [1] "Suma:  78528"
print(paste("Estimacion: ",4 * sum(puntos)/length(x)))
## [1] "Estimacion:  3.14112"