ECOLOGIA VEGETAL 2012
Módulo I
Tópicos
Material de Apoio
*/
Essa é uma revisão anterior do documento!
Essa função está em construção… ainda precisa de trabalho. Estamos no caminho!
meta.espacial=function(tf,c,l,fi,i,pe, pi, canto=FALSE) { paisag=array(0,dim=c(l,c,tf)) nmanchas=c*l if(canto==TRUE) { paisag[1:round(l*fi),1:round(c*fi),1]=1 } else { paisag[,,1]=matrix(sample(c(rep(1,fi*nmanchas), rep(0,round((1-fi)*nmanchas)))), ncol=c) } resultado=numeric() for(t in 2:tf) { vazio=which(paisag[,,(t-1)]==0, arr.ind=TRUE) nvazio=dim(vazio)[1] ocupa=which(paisag[,,(t-1)]==1, arr.ind=TRUE) nocupa=dim(ocupa)[1] dif=outer(ocupa,vazio, "-") difx=dif[,1,,1] dify=dif[,2,,2] dist=sqrt(difx^2+dify^2) dist.media=apply(dist,2,mean) dist.max=sqrt(c^2+l^2) dist.rel=(dist.max-dist.media)/dist.max pi.aj=pi*dist.rel paisag[,,t][paisag[,,(t-1)]==1]<-sample(c(0,1),nocupa,replace=T,prob=c(pe,1-pe)) paisag[,,t][paisag[,,(t-1)]==0]<-rbinom(nvazio,1,prob=pi.aj) resultado[t-1]=sum(paisag[,,t])/nmanchas } #F=1-(pe/i) plot(1:tf,c(fi,resultado),type="l",xlab="Tempo",ylab="Fração de manchas ocupadas", ylim=c(0,1),main="Dinâmica de ocupação de manchas",font.lab=2,lwd=2) #abline(h=F,col=2,lwd=2,lty=2) invisible(paisag) }
Os argumentos da função são:
Copie também a função abaixo para fazer a simulação animada.
anima2=function(dados) { tf=dim(dados)[3] for(i in 1:tf){ image(dados[,,i], main=("Ocupação de manchas"),col=c("white","red"),bty="n",xaxt='n',yaxt='n') grid(dim(dados)[1],dim(dados)[2]) Sys.sleep(.2) } }
Pronto! Agora é só rodar o exemplo abaixo e depois mudar os parâmetros da primeira linha para rodar novas simulações:
simula=meta.espacial(tf=100,c=10,l=10,fi=0.1,pe=0.2,pi=0.3, canto=TRUE) x11() anima2(simula1)