Propuesta de Leibniz
\[\Large{\pi=8\sum_{k=0}^\infty\frac{1}{(4k+1)(4k+3)}}\]
Propuesta de Euler
\[\Large{\pi=\sqrt{6\sum_{k=1}^{\infty}\frac{1}{k^2}}}\]
# Propuesta de Leibniz
leibniz=function(k){
i=seq(0,k,1)
pi_1=8*sum(1/((4*i+1)*(4*i+3)))
return(pi_1)
}
N=100
pi_ls=c()
for(i in 1:N){
pi_ls[i]=leibniz(i)
}
plot(x=1:N, y=pi_ls)
abline(h=pi, col='red')
# Propuesta de Leibniz
Leibniz=function(k){
i=seq(0,k,1)
pi_l=8*sum(1/((4*i+1)*(4*i+3)))
return(pi_l)
}
# Propuesta de Euler
Euler = function(k){
i=seq(1,k,1)
pi_e=sqrt(6*sum(1/i^2))
return(pi_e)
}
N=100
pi_ls=c()
pi_es=c()
for(i in 1:N){
pi_ls[i]=Leibniz(i)
pi_es[i]=Euler(i)
}
plot(x=1:N,y=pi_ls,col="blue",type="l")
points(x=1:N,y=pi_es,col="red",type="l")
abline(h=pi,col="orange")
#Circulo
n=1000
x=runif(n,-0.5,0.5)
y=runif(n,-0.5,0.5)
plot(x,y,xlim=c(-0.5,0.5),ylim=c(-0.5,0.5),pch=16,
col=ifelse(x**2+y**2<0.25,"darkgreen","darkred"),asp=1)
(table(x**2+y**2<0.25)[2]/n)/(0.5^2)
## TRUE
## 3.088
n = 1000
pi_c=c()
for(i in 1:n){
x=runif(n,-0.5,0.5)
y=runif(n,-0.5,0.5)
pi_c[i]=(table(x**2+y**2<0.25)[2]/n)/(0.5^2)
}
plot(x=1:n,y=pi_c)
abline(h=pi, col='red',lwd=2,cex=0.1)
n=1000
pi_c=c()
set.seed(2023)
for(i in 1:n){
x=runif(i,-0.5,0.5)
y=runif(i,-0.5,0.5)
pi_c[i]=(table(x**2+y**2<0.25)[2]/i)/(0.5^2)
}
plot(x=1:n,y=pi_c,cex=0.5)
abline(h=pi,col="red",lwd=2)
Replicar lo visto en clase para el área comprendida entre dos funciones, esto se toma como la integral de la diferencia entre estas funciones, así se puede hayar el valor del área entre las curvas.
# Curvas
curve(x^2,from = 0,to = 4.5)
curve(-(x^2/2)+20,add=T)
text(x = 1,y=10,"Area")
abline(v=0)
\[A=\int_0^? \frac{-x^2}{2}+20-x^2 dx\]
curve(x^2,from = 0,to = 4.5)
curve(-(x^2/2)+20, add = T)
abline(v=0)
points(x=c(0,0,sqrt(40/3),sqrt(40/3)),y=c(0,20,0,20),col="red",pch=16)
n_2 <- 100000
x <- runif(n, 0, sqrt(40/3))
y <- runif(n, 0, 20)
# Definir las dos curvas
curve1 <- x**2
curve2 <- -((x**2)/2)+20
# Crear una condición para verificar si los puntos están entre las dos curvas
condition <- y > curve1 & y < curve2
# Graficar los puntos coloreando según la condición
Gráfico1 <- plot(x, y, xlim = c(0, sqrt(40/3)), ylim = c(0, 20), pch = 16,
col = ifelse(condition, "darkgreen", "darkred"))
table(condition)
## condition
## FALSE TRUE
## 343 657
# TRUE: Cantidad de puntos que cayeron dentro del área que describe las dos curvas.
# FALSE: Cantidad de puntos que cayeron por fuera del área que describe las dos curvas.
# Se cálcula el área bajo la curva (integral), entre las dos curvas.
integrate(function(x) (-((x^2)/2)+20)-(x^2), lower = 0, upper = sqrt(40/3))
## 48.68645 with absolute error < 5.4e-13
# En este caso, solo nos interesa los puntos que caen por dentro del área de interés.
# [2]: El número de la columna correspondiente a los puntos dentro del área entre las dos curvas.
# n_2: Número de puntos generados.
# Finalmente, se divide entre el área de la integral o el área bajo la curva, elevada al cuadrado, para poder determinar el valor de la propuesta de Euler.
(table(condition)[2]/n_2)/(48.68645^2)
## TRUE
## 2.771719e-06