Un elemento fundamental en geometría es la determinación del valor de la constante (pi), Una técnica de estimación es la generación de puntos aleatorios dentro de un área cuadrada que contiene un círculo inscrito de lado igual a 1, comocemos que existe una relación entre el área de un cuadrado y la de un círculo, mediante simulación por medio de R podemos aproximarnos al valor de pi.
El principio fundamental de esta aproximación es hacer una relación entre el número de puntos generados de forma aleatoria con el área total calculada considerando si estos aparecen dentro del rango del círculo o no. Cuando se usa una escala de generación de números aleatorios entre 0 y 1, el área máxima del cuadrado que podemos calcular es de 1 y el del circulo de acuerdo a las fórmulas de área es:
\[ Area_{Circulo} =πr^2 \] sustituyendo el valor de r , en la ecuación, Conociendo esta relación, podemos despejar de la ecuación para que el área que calculemos a partir de puntos no sea la incógnita y que en su lugar sea Pi, tal que asi: \[ Area_{Circulo} =\frac{π}{4} \] Por lo tanto al despejar el valor de Pi:
\[ π =4Area_{Circulo} \]
Para alimentar las simulaciones se hará uso de las funciones de R que permiten generar números bajo diferentes distribuciones de probabilidad. En este caso queremos tener una distribución que nos de una misma probabilidad a lo largo de un rango, por ello se hará uso de la distribución uniforme para generar dos conjuntos de datos de tamaño n, cada uno de una dimensión, pero que al juntarlos formen un espacio bidimensional de puntos dispersos equitativamente.
Para ilustrar la simulación usaremos un rango de generación de numero de tamaño 1 (números entre 0 y 1) y un n = 1.000. Crearemos dos grupos de datos x1, y1.
n1=1000
# Paso 1: Generar coordenadas aleatorias
x1 <- runif(n1, min = 0, max = 1) ## En este caso 1.000 puntos
y1 <- runif(n1, min = 0, max = 1) ## En este caso 1.000 puntos
# Paso 2: Crear un dataframe con las cordenadas
data=as.data.frame(cbind(x1,y1))
# Visualizar
library(ggplot2)
ggplot(data, aes(x = x1, y = y1)) +
geom_point()+
theme_bw()
De acuerdo a las coordenadas aleatorias la distribución es semejante a un cuadrado de lado = 1, a medida que se incrementa el valor de n, se mejora la estimación del modelo.
| n | Numero_puntos_rojos | Pi_Estimado |
|---|---|---|
| 1e+03 | 792 | 3.1680 |
| 1e+04 | 7,912 | 3.1648 |
| 1e+05 | 78,215 | 3.1286 |
El modelo creado estima el valor de Pi, al aumentar el valor de n mejoramos la estimación, sin embargo en la medida que aumentemos el valor de n el proceso se va volviendo más lento y dependemos de recursos de memoria para no demorar en el proceso.