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 puede encontrar una aproximación para el valor de π.
n=1000
pi_sim=function(n){
pi_c=c()
set.seed(2023) # semilla ( para reproducibilidad)
for(i in 1:n)
{
x=runif(i,0,1)
y=runif(i,0,1)
pi_c[i]=(table((x-0.5)**2+(y-0.5)**2<0.25)[2]/i)*4
}
g=plot(x=1:n,y=pi_c,cex=0.8,pch=18)
g=g+ abline(h=pi,col="red",lwd=2)
}
pi_sim(1000)
#Circulo
n=1000
x=runif(n = n,min = 0,max = 1)# generando datos en x
y=runif(n,0,1) # generando datos en y
plot(x,y,pch=16,
col=ifelse((x-0.5)**2+(y-0.5)**2<0.25,"darkgreen","darkred"),asp=1) # grafico
(table((x-0.5)**2+(y-0.5)**2<0.25)[2]/n)*4
## TRUE
## 3.212
pi
## [1] 3.141593
n=10000
pi_sim=function(n){
pi_c=c()
set.seed(2023) # semilla ( para reproducibilidad)
for(i in 1:n)
{
x=runif(i,0,1)
y=runif(i,0,1)
pi_c[i]=(table((x-0.5)**2+(y-0.5)**2<0.25)[2]/i)*4
}
g=plot(x=1:n,y=pi_c,cex=0.8,pch=18)
g=g+ abline(h=pi,col="red",lwd=2)
}
pi_sim(1000)
#Circulo
n=10000
x=runif(n = n,min = 0,max = 1)# generando datos en x
y=runif(n,0,1) # generando datos en y
plot(x,y,pch=16,
col=ifelse((x-0.5)**2+(y-0.5)**2<0.25,"darkgreen","darkred"),asp=1) # grafico
(table((x-0.5)**2+(y-0.5)**2<0.25)[2]/n)*4
## TRUE
## 3.1344
pi
## [1] 3.141593
n=100000
pi_sim=function(n){
pi_c=c()
set.seed(2023) # semilla ( para reproducibilidad)
for(i in 1:n)
{
x=runif(i,0,1)
y=runif(i,0,1)
pi_c[i]=(table((x-0.5)**2+(y-0.5)**2<0.25)[2]/i)*4
}
g=plot(x=1:n,y=pi_c,cex=0.8,pch=18)
g=g+ abline(h=pi,col="red",lwd=2)
}
pi_sim(1000)
#Circulo
n=100000
x=runif(n = n,min = 0,max = 1)# generando datos en x
y=runif(n,0,1) # generando datos en y
plot(x,y,pch=16,
col=ifelse((x-0.5)**2+(y-0.5)**2<0.25,"darkgreen","darkred"),asp=1) # grafico
(table((x-0.5)**2+(y-0.5)**2<0.25)[2]/n)*4
## TRUE
## 3.1376
pi
## [1] 3.141593