La siguiente figura sugiere como estimar el valor de π con una simulación. En la figura, un círcuito con un área igual a π/4, está inscrito en un cuadrado cuya área es igual a 1. Se elige de forma aleatoria n puntos dentro del cuadrado . La probabilidad de que un punto esté dentro del círculo es igual a la fracción del área del cuadrado que abarca a éste, la cual es π/4. Por tanto, se puede estimar el valor de π/4 al contar el número de puntos dentro del círculo, para obtener la estimación de π/4 . De este último resultado se encontrar una aproximación para el valor de π
Pasos sugeridos:
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 π?
estimar_pi <- function(n) {
#punto a
nc <- n # se genera 1000 coordenadas
#punto b
x <- runif(nc, min = 0, max = 1) #Generacion de valores aleatorios distribuido entre 0 y 1
y <- runif(nc, min = 0, max = 1) #Generacion de valores aleatorios distribuido entre 0 y 1
#punto c puntos dentro del circulo
dcirculo <- sum((x - 0.5)^2 + (y-0.5)^2 < 0.25)
# cat("Puntos dentro del circulo:",dcirculo)
#punto d Estimacion de pi
estima_pi <- (dcirculo/ nc)* 4
#cat("Estimacion de pi:",estima_pi)
# Devolver los resultados
return(list(dcirculo = dcirculo, estima_pi = estima_pi))
}
resultado <- estimar_pi(1000)
cat("Coordenada: 1000")
## Coordenada: 1000
cat("Puntos dentro del circulo:",resultado$dcirculo)
## Puntos dentro del circulo: 800
cat("Estimacion de pi:",resultado$estima_pi)
## Estimacion de pi: 3.2
cat("Coordenada: 10000")
## Coordenada: 10000
resultado <- estimar_pi(10000)
cat("Puntos dentro del circulo:",resultado$dcirculo)
## Puntos dentro del circulo: 7882
cat("Estimacion de pi:",resultado$estima_pi)
## Estimacion de pi: 3.1528
cat("Coordenada: 100000")
## Coordenada: 100000
resultado <- estimar_pi(100000)
cat("Puntos dentro del circulo:",resultado$dcirculo)
## Puntos dentro del circulo: 78600
cat("Estimacion de pi:",resultado$estima_pi)
## Estimacion de pi: 3.144
Se observa que al realizar la simulación con un valor mas amplio en las coordenadas la estimación de pi se va volviendo mas precisa ya que la variabilidad sera baja.