Se generan las variables X y Y. Para Y se fija el valor de 1000, y para X se asigna el valor de 1000, con el fin de que sea un espejo de la función.
valor_X<-runif(1000, 0, 1)
valor_Y<-runif(1000, 0, 1)
Se crea la función fx, la cual calcula la distancia entre los conjuntos de puntos y el centro del círculo. Esta función se calcula con las variables definidas anteriormente y se asigna su resultado a la variable distancia_puntos.
fx=function(x,y){(x - 0.5)^2 + (y - 0.5)^2}
distancia_puntos <- fx(valor_X,valor_Y)
Luego del cálculo de la distancia, se crea una variable boolean en la que se compara la distancia con que sea menor a 0.25, lo cual determina si el punto se encuentra dentro del círculo. Luego se realiza el conteo de los puntos que se encuentran dentro del circulo.
dentro_circulo <- distancia_puntos < 0.25
n <- sum(dentro_circulo)
Para el cálculo de pi_estimado se tiene que la probabilidad de que un punto se encuentre dentro del circulo es pi/4 y al generar 1000 puntos aleatorios, por tanto la estimación de pi es el número de puntos dentro del circulo dividido en el total de puntos y multiplicado por 4.
pi_estimado <- (4*n)/1000
cat("Número de puntos dentro del círculo:", n)
## Número de puntos dentro del círculo: 788
cat(" ")
cat("Estimación de π:", pi_estimado)
## Estimación de π: 3.152
El resultado gráfico del ejercicio es el siguiente:
library(graphics)
plot(valor_X, valor_Y, pch=1, cex=0.5)
points(valor_X[dentro_circulo], valor_Y[dentro_circulo], col = "purple", pch=1, cex = 0.5)