La siguiente figura sugiere como estimar el valor de pi con una simulación. En la figura, un círcuito con un área igual a \(\pi\)/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 \(\pi\)/4. Por tanto, se puede estimar el valor de \(\pi\)/4 al contar el número de puntos dentro del círculo, para obtener la estimación de \(\pi\)/4. De este último resultado se encontrar una aproximación para el valor de \(\pi\).
Paso 1: Generar \(n\) coordenadas \(x: X1, . . . , Xn\).. Se utiliza 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).
# Total de puntos aleatorios a generar
n <- 10000
# Creación de coordenadas X dentro del rango [0, 1]
x <- runif(n, min = 0, max = 1)
Paso 2: Generar 1000 coordenadas \(y: Y1,...,Yn\), utilizando nuevamente la distribución uniforme con valor mínimo de 0 y valor máximo de 1.
# Creación de coordenadas Y dentro del mismo rango [0, 1
y <- runif(n, min = 0, max = 1)
Paso 3: 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)\). Se determina 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.
# Cálculo de la distancia al centro del área (0.5, 0.5)
distancias <- (x - 0.5)^2 + (y - 0.5)^2
# Contar cuántos puntos caen dentro del círculo (radio 0.5)
puntos_dentro <- sum(distancias <= 0.25)
# Cálculo de pi usando la proporción de puntos dentro del círculo
pi_estimado <- 4 * puntos_dentro / n
# Imprimir el valor estimado de pi
cat("Estimación de pi con", n, "coordenadas:", pi_estimado, "\n")
## Estimación de pi con 10000 coordenadas: 3.1652
Finalmente, se realiza el mismo ejercicio con generando 1.000, 10.000, 100.000 y 1.000.000 de coordenadas y calculando el error porcentual respecto al valor real de pi con el fin de evidendeciar que entre más coordenadas se utilicen, mejor es la estimación:
## Valor real de pi: 3.141593
## Estimación con 1.000 puntos: 3.152 | Error: 0.33128 %
## Estimación con 10.000 puntos: 3.1516 | Error: 0.31854 %
## Estimación con 100.000 puntos: 3.13896 | Error: 0.0838 %
## Estimación con 1 millón de puntos: 3.138896 | Error: 0.08584 %