#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);