Construcción de la función

Se procede a la contrucción de una función que me permita estimar el valor de \(\pi\) para distintos tamaños de muestra:

library(ggplot2)
set.seed(66) #Semilla

estPi <- function(n){

x <- runif(n, min = 0, max = 1)
y <- runif(n, min = 0, max = 1)

distancia <- (x - 0.5)^2 + (y - 0.5)^2

dentroCirculo <- distancia < 0.25

sumaDentroCirculo <- sum(dentroCirculo)

piEst <- 4 * sumaDentroCirculo / n


#Grafico
puntos <- data.frame(
  x = x,
  y = y,
  c = ifelse(dentroCirculo, "Dentro", "Fuera")
)

p <- ggplot() + xlim(0, 1) + ylim(0, 1)

p <- p + annotate("rect", xmin = 0, xmax = 1, ymin = 0, ymax = 1, fill = NA, color = "black")

circulo <- data.frame(
  x = 0.5 + 0.5 * cos(seq(0, 2*pi, length.out = 100)),
  y = 0.5 + 0.5 * sin(seq(0, 2*pi, length.out = 100))
)

p <- p + geom_path(data = circulo, aes(x, y))

p <- p + coord_fixed()

p <- p + geom_point(data = puntos, aes(x, y, color = c))

p <- p + theme_minimal()

p

lista <- list(NumeroPuntos = n, x = x, y = y, DentroCirculo = dentroCirculo, PuntosDentroCirculo = sumaDentroCirculo, EstimacionPi = piEst, grafico=p)

return(lista)

}

Resultados

n = 1000

resultados <- estPi(1000)
cat("Con", resultados$NumeroPuntos, "coordenadas, el número de puntos que caen dentro del circulo es de", resultados$PuntosDentroCirculo, "\n")
## Con 1000 coordenadas, el número de puntos que caen dentro del circulo es de 810
cat("Y la estimación del valor de Pi es:", resultados$EstimacionPi, "\n")
## Y la estimación del valor de Pi es: 3.24
cat("Con un error absoluto de:", abs(pi-resultados$EstimacionPi))
## Con un error absoluto de: 0.09840735
resultados$grafico

n = 10000

resultados <- estPi(10000)
cat("Con", resultados$NumeroPuntos, "coordenadas, el número de puntos que caen dentro del circulo es de", resultados$PuntosDentroCirculo, "\n")
## Con 10000 coordenadas, el número de puntos que caen dentro del circulo es de 7891
cat("Y la estimación del valor de Pi es:", resultados$EstimacionPi, "\n")
## Y la estimación del valor de Pi es: 3.1564
cat("Con un error absoluto de:", abs(pi-resultados$EstimacionPi))
## Con un error absoluto de: 0.01480735
resultados$grafico

n = 100000

resultados <- estPi(100000)
cat("Con", resultados$NumeroPuntos, "coordenadas, el número de puntos que caen dentro del circulo es de", resultados$PuntosDentroCirculo, "\n")
## Con 1e+05 coordenadas, el número de puntos que caen dentro del circulo es de 78163
cat("Y la estimación del valor de Pi es:", resultados$EstimacionPi, "\n")
## Y la estimación del valor de Pi es: 3.12652
cat("Con un error absoluto de:", abs(pi-resultados$EstimacionPi))
## Con un error absoluto de: 0.01507265
resultados$grafico

Conclusión

Se logra observar a partir de los resultados obtenidos, que a mayor cantidad de muestras tomadas, se logra aproximar mas al valor real de \(\pi\).