Problema 1

Estimación del valor de π

La siguiente 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 π.

1 - Genere n coordenadas x: X1, . . . , Xn. Utilice 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).

#x <- 1000 # Se asignan las cantidades a x
#cordenadax <- runif(x, min=0, max=1) # x cantidades de numero entre en 0 y 1

2 - Genere 1000 coordenadas y : Y1,…,Yn, utilizando nuevamente la distribución uniforme con valor mínimo de 0 y valor máximo de 1.

#y <- 1000 # Se asignan 1000 cantidades a y
#cordenaday <- runif(y, min=0, max=1)# y cantidades de numero entre en 0 y 1

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) determine 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.

#cordenadas = data.frame(cordenadax,cordenaday) # Se crea la tabla con los datos de las cordenas de x y y 
#funcion <- (cordenadas$cordenadax-0.5)^2+(cordenadas$cordenaday-0.5)^2 # se realiza el calculo del valor para todas las cordenadas
#dentro <- which(funcion<=0.25) # Se identificas que coordenas estan dentro del circulo

4 - ¿Cuántos de los puntos están dentro del círculo? ¿Cuál es su estimación de π?

Para dar respuesta a esta pregunta y relacionando con la pregunta 1 se fue necesario realizar la funcion X, la cual debe de ser un dato n y puede cambiar en cualquier momento, para el ejercicio utilizamos un n de (1000,10000,100000).

Para resumir recursos de maquina se agrupa todo el codigo en la funcion llamada X la cual se le asignan las cantidades de coordenadas en X

y <- 1000
rad     <- 0.5   # Valor del radio
xcenter <- 0.5  # Coordenada en x del centro
ycenter <- 0.5   # Coordenada en y del centro
x <- function(x){
  # a - Generacion de n cordenadas en x
  cordenadax <- runif(x, min=0, max=1)
  cordenadax
  
  # b - Generacion de 1.000 cordenadas en y
  cordenaday <- runif(y, min=0, max=1)
  cordenaday
  cordenadas = data.frame(cordenadax,cordenaday)
  funcion <- (cordenadas$cordenadax-0.5)^2+(cordenadas$cordenaday-0.5)^2
  funcion
  dentro <- which(funcion<=0.25)
  dentro
  dentro
  
  print(paste("Dentro del circulo se encuentran",length(funcion[funcion<0.25]),"puntos"))
  print(paste("Fuera del circulo se encuentran",length(funcion[funcion>0.25]),"puntos"))
  print(paste("Valor estimado de Pi/4 es :",length(funcion[funcion<0.25])/x," Valor estimado de pi:",(length(funcion[funcion<0.25])/x)*4))
  
  
  for (i in 1:y){
    
    #plot(cordenadas$cordenadax[1:i],cordenadas$cordenaday[1:i],xlim=c(0,1),ylim=c(0,1))
    
  }
  plot(cordenadas$cordenadax[1:i],cordenadas$cordenaday[1:i],xlim=c(0,1),ylim=c(0,1))
  theta <- seq(0, 2 * pi, length = 200)
  polygon(x=rad * cos(theta) + xcenter,
          y=rad * sin(theta) + ycenter,
          lwd=3, border='steelblue4')
}

# Cantidad de coordenadas en X
x(1000)
## [1] "Dentro del circulo se encuentran 761 puntos"
## [1] "Fuera del circulo se encuentran 239 puntos"
## [1] "Valor estimado de Pi/4 es : 0.761  Valor estimado de pi: 3.044"

x(10000)
## [1] "Dentro del circulo se encuentran 7829 puntos"
## [1] "Fuera del circulo se encuentran 2171 puntos"
## [1] "Valor estimado de Pi/4 es : 0.7829  Valor estimado de pi: 3.1316"

x(100000)
## [1] "Dentro del circulo se encuentran 78315 puntos"
## [1] "Fuera del circulo se encuentran 21685 puntos"
## [1] "Valor estimado de Pi/4 es : 0.78315  Valor estimado de pi: 3.1326"