#SIMULACION MONTECARLO

\[\int_{0}^{2e}ln(x)dx = \lim_{b\to0}\int_{b}^{2e}ln(x)dx\]

GRAFICA

curve(log(x),from = 0, to = 2*exp(1),col = "darkgreen", main = " GRAFICA LOGARITMO NEPERIANO", ylab = "Ln(x)", xlab = "x")
segments(x0 = 3, y0 = -3, x1 = 3, y1=log(3), col = "orange")
segments(x0 = 3.3, y0 = -3, x1 = 3.3, y1=log(3.3), col = "orange")
arrows(x0=3.5,y0=-2,x1=3.2,y1=-2,length = 0.1)
text(3.63, y = -1.95, 'dx')
abline(v=0)#en 0 tiende a -infinito

AREA BAJO LA CURVA

puntos = 2000000
d = c()
dn = c()
x = c()
y = c()

for(p in 1:puntos){
  x[p] = runif(1, min = 0, max = 2*exp(1))
  y[p] = runif(1, min = -1000, max = log(2*exp(1)))
  d[p] = (y[p] < log(x[p]))
  dn[p] = ifelse(d[p] == T, 'bajo la curva', 'sobre la curva')
}
plot(x , y , col = ifelse(dn == 'bajo la curva', 'cyan','black'), pch = 19, cex = 0.5, main = 'AREA BAJO LA CURVA LOGARITMO NEPERIANO', ylab = 'Ln(x)', xlab = 'x', ylim=c(-3,2))

#INTEGRAL SIMULADA
punto = table(dn)
punto
## dn
##  bajo la curva sobre la curva 
##        1998013           1987
prop = punto[1]/sum(punto)
prop
## bajo la curva 
##     0.9990065
names(prop) = 'area'
area_total=2*exp(1)
area.simulada=area_total*prop
area.simulada
##     area 
## 5.431162
ln = function(x) log(x)
area.real= integrate(ln,0,2*exp(1))
area.real
## 3.768339 with absolute error < 4.2e-15
area = 3.768339

area.simulada/area
##     area 
## 1.441262

AREA BAJO LA CURVA

puntos = 200000
d1 = c()
dn1 = c()
x1 = c()
y1 = c()

for(p in 1:puntos){
  x1[p] = runif(1, min = 0, max = 2*exp(1))
  y1[p] = runif(1, min = -1000, max = log(2*exp(1)))
  d1[p] = (y1[p] < log(x1[p]))
  dn1[p] = ifelse(d1[p] == T, 'bajo la curva', 'sobre la curva')
}
plot(x1 , y1 , col = ifelse(dn1 == 'bajo la curva', 'cyan','black'), pch = 19, cex = 0.5, main = 'AREA BAJO LA CURVA LOGARITMO NEPERIANO', ylab = 'Ln(x)', xlab = 'x', ylim=c(-3,2)) 

#INTEGRAL SIMULADA
punto1 = table(dn1)
punto1
## dn1
##  bajo la curva sobre la curva 
##         199814            186
prop1 = punto1[1]/sum(punto1)
prop1
## bajo la curva 
##       0.99907
names(prop1) = 'area'
area_total=2*exp(1)
area.simulada1=area_total*prop1
area.simulada1
##     area 
## 5.431508
ln1 = function(x) log(x)
area.real1= integrate(ln1,0,2*exp(1))
area.real1
## 3.768339 with absolute error < 4.2e-15
area = 3.768339

area.simulada1/area
##     area 
## 1.441353

AREA BAJO LA CURVA

puntos = 20000
d2 = c()
dn2 = c()
x2 = c()
y2 = c()

for(p in 1:puntos){
  x2[p] = runif(1, min = 0, max = 2*exp(1))
  y2[p] = runif(1, min = -1000, max = log(2*exp(1)))
  d2[p] = (y2[p] < log(x2[p]))
  dn2[p] = ifelse(d2[p] == T, 'bajo la curva', 'sobre la curva')
}
plot(x2 , y2 , col = ifelse(dn2 == 'bajo la curva', 'cyan','black'), pch = 19, cex = 0.5, main = 'AREA BAJO LA CURVA LOGARITMO NEPERIANO', ylab = 'Ln(x)', xlab = 'x', ylim=c(-3,2)) 

#INTEGRAL SIMULADA
punto2 = table(dn2)
punto2
## dn2
##  bajo la curva sobre la curva 
##          19983             17
prop2 = punto2[1]/sum(punto2)
prop2
## bajo la curva 
##       0.99915
names(prop2) = 'area'
area_total=2*exp(1)
area.simulada2=area_total*prop2
area.simulada2
##     area 
## 5.431943
ln = function(x) log(x)
area.real= integrate(ln,0,2*exp(1))
area.real
## 3.768339 with absolute error < 4.2e-15
area = 3.768339

area.simulada2/area
##     area 
## 1.441469

El logaritmo neperiano de x (Ln x) tiene una asintota vertical en x=0; de este modo hay problemas al calcular la integral en 0 ya que en este punto tiende a \[-\infty\], al hacer la simulación se deben poner valores finitos por lo que el valor de la integral no va a ser exacto en ninguna de las simulaciones; entre más puntos se tomen va a tender a ser más excato, igual si se toma un limite inferior menor (negartivo), se podra estimar de mejor forma la integral.