\[\int_{0}^{\pi/2} \! Sen(\theta) d\theta = -cos(\theta)|_{0}^{\pi/2} = 1\]
curve(sin(x), from = 0, to = pi/2)
segments(x0 = 1, y0 = 0, x1 = 1, y1 = sin(1), col = 'red')
segments(x0 = 1.05, y0 = 0, x1 = 1.05, y1 = sin(1.05), col = 'red')
abline(h = 0, col = 'blue')
abline(h = 1, col = 'blue')
abline(v = 0, col = 'blue')
abline(v = pi/2, col = 'blue')
arrows(x0 = 1.15, y0 = 0.2, x1 = 1.025, y1 = 0.2, length = 0.1)
text(1.18, y = 0.2, 'dx')
points(0.4, 0.2, pch = 19, cex = 2)
text(0.45, 0.13, '(x sim, y sim)')
segments(x0 = 0.4, y0 = 0.2, x1 = 0.4, y1 = sin(0.4), lty = 2)
points(0.4, sin(0.4), pch = 19, cex = 1, col = 'blue')
text(0.4, sin(0.4)+0.07, '(x sim, sin(x sim))')
\[Área~bajo~la~curva = \int_{a}^{b}f(x)dx\]
puntos = 100000
d = c(); dn = c(); x = c(); y = c()
for(p in 1:puntos){
x[p] = runif(1, 0, pi/2)
y[p] = runif(1, 0, 1)
d[p] = (y[p]<sin(x[p]))
dn[p] = ifelse(d[p] == T, 'Abajo', 'Arriba')
}
plot(x, y, col = ifelse(dn == 'Abajo', 'orange', 'gray'), pch = 19, cex = 0.25)
puntos = table(dn)
(prop = puntos[1]/sum(puntos)) # proporcion de puntos en el area
## Abajo
## 0.63668
names(prop) = 'Area'
(area_total = pi/2)
## [1] 1.570796
(area.simulada = area_total*prop)
## Area
## 1.000095
\[\int_{0}^{2e} ln(x)dx = \lim_{b \to 0}\int_{b}^{2e} ln(x)dx\]
puntos1 = 500000
d1 = c(); dn1 = c(); x1 = c(); y1 = c()
for(p in 1:puntos1){
x1[p] = runif(1, 0, (2*exp(1)))
y1[p] = runif(1, -8,log(2*exp(1)))
d1[p] = (y1[p]<log(x1[p]))
dn1[p] = ifelse(d1[p] == T, 'Abajo', 'Arriba')
}
plot(x1, y1, col = ifelse(dn1 == 'Abajo', 'orange', 'gray'), pch = 19, cex = 0.25, ylim = c(-8,log(2*exp(1))), xlim = c(0,(2*exp(1))))
abline(h=c(0,log(2*exp(1))),v=c(1,(2*exp(1))))
sumy1<-sum(x1>1&y1>0);sumy1
## [1] 70956
sumy2<-sum(x1>1&y1>log(x1));sumy2
## [1] 25667
sumy3<-sum(x1<1&y1<0);sumy3
## [1] 75540
sumy4<-sum(x1<1&y1<log(x1));sumy4
## [1] 66174
areasub1<-(log(2*exp(1))+8)*(2*exp(1))/puntos1*(sumy1-sumy2)
areasub2<-(log(2*exp(1))+8)*(2*exp(1))/puntos1*(sumy3-sumy4)
areatotal<-(areasub1-areasub2)
areatotal
## [1] 3.786098
La simulación nos permite agregar puntos a la función Ln(x), pero solo hasta valores finitos, entre mas negativo sea el valor que toma Y mayor sera la exactitud del area calculada
f1<-function(x){log(x)}
curve(f1, from = 0, to=2*exp(1), ylim=c(-3,log(2*exp(1))))
abline(h=c(0,log(2*exp(1))),v=c(1,(2*exp(1))))
n = 300000
xn = runif(n, 1,2*exp(1) )
yn = runif(n, 0, log(2*exp(1)))
points(xn,yn, pch = 16, cex = 0.1, col=gray(0.5))
xn1 = runif(n/3, 0,1)
yn1 = runif(n/3, -2.9,0)
points(xn1,yn1, pch = 16, cex = 0.1, col=gray(0.5))
curve(f1, from = -2.9, to=0, add=T, col='yellow')
## Warning in log(x): NaNs produced
curve(f1, from = 0, to=2*exp(1), add=T, col='yellow')
men_f11<-sum(xn>1&yn<log(xn));men_f11
## [1] 190306
men_f12<-sum(xn1<1&yn1>log(xn1));men_f12
## [1] 32829
areaa1<-(log(2*exp(1)))*(2*exp(1)-1)/n*men_f11 ;areaa1
## [1] 4.765107
areaa2<-(2.9)*(1)/(n/3)*men_f12 ;areaa2
## [1] 0.952041
areaat<-areaa1-areaa2;areaat
## [1] 3.813066
Al calcular el area usando la función Ln(x) que se genera automaticamente en R, podemos observar que esta toma valores finitos hasta -2.9 aproximadamente lo que nos da un area un poco mayor que la obtenida usando simulación.