La figura sugiere como estimar el valor de π con una simulación. En la figura, un circuito 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 este, 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 π.
Inicialmente vamos a generar 1000 coordenadas utilizando como distribución uniforme un valor minimo de 0 y un valor maximo de 1, esto mismo se realizará y se asignará a otra variable, se crea un vector que almacena las distancias y se calculan las distancias en un ciclo for, a continuación se guardan los puntos tanto dentro como fuera del circulo.
set.seed(123)
x = runif(1000,0,1)
y = runif(1000,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)
cantidadpuntos <- seq(0, 2*pi, length.out = 100)
plot(0, 0, asp = 1, type = "n",
xlim = c(0, 1), ylim = c(0, 1),
ann = F)
abline(v = seq(0, 1, 0.1), lty = 2, col = "Red")
abline(h = seq(0, 1, 0.1), lty = 2, col = "Red")
radio <- 1/2
a <- 0.5 ## origen circunferencia eje x
b <- 0.5 ## origen circunferencia eje y
x1 <- a + cos(cantidadpuntos)*radio
y1 <- b + sin(cantidadpuntos)*radio
points(x1, y1, type = "l", col = "Blue", lwd=2)
points(x,y,pch = 20)
Se van a graficar los puntos con el fin de conocer el numero de puntos dentro del circulo, en total habian 800 puntos.
sum(puntos)
## [1] 800
Y se realiza la estimación de pi, que da un total de 3.2.
4 * sum(puntos)/length(x)
## [1] 3.2