#Montecarlo simples: integrador # # #FUNCAO MONTECARLO #ARGUMENTOS: #f: func n-dimensional, o argumento de f e' un vetor n-dimensional e a resposta e' um valor real #a e b vetores n-dimensionais #N: tamanho da amostra para realizar a integracao # montecarlo<-function(f,a,b,N){u<-matrix(nrow=N,ncol=dim(a)[1]); for(j in 1:dim(a)[1]){u[,j]<-runif(N,a[j],b[j])}; transf<-matrix(nrow=N,ncol=1); for(i in 1:N){transf[i]<-f(u[i,])}; qtransf<-transf^2; sale1<-prod((b-a))*mean(transf); sale2<-prod((b-a))*sqrt((mean(qtransf)-(mean(transf))^2)/N); salida<-list(integral=sale1,error=sale2) } # #teste #g<-function(x){x^2}; #integrate(g,2,3); #controle #a<-montecarlo(f=g,a=matrix(c(2),nrow=1,ncol=1),b=matrix(c(3),nrow=1,ncol=1),100000) # # # #teste #f<-function(x){x[1]^2+x[2]^2}; #adapt(2,c(0,0),c(1,1),functn=f); #controle #a<-montecarlo(f=f,a=matrix(c(0,0),nrow=2,ncol=1),b=matrix(c(1,1),nrow=2,ncol=1),10000);