# arboles4(n=20,ps=.7,qs=.1,pn=.5,qn=.3,Kj=5,pj=.8,qj=.1,Ka=20,pa=.9,s0=100,n0=0,j0=0,a0=0,modo="A") # arboles4(n=40,ps=.7,qs=.1,pn=.3,qn=.1,Kj=5,pj=.5,qj=.01,Ka=100,pa=.5,s0=100,n0=0,j0=0,a0=0,modo="C") # arboles4(n=40,ps=.7,qs=.1,pn=.3,qn=.1,Kj=5,pj=.5,qj=.01,Ka=250,pa=.5,s0=100,n0=0,j0=0,a0=0,modo="C") # arboles4(n=40,ps=.7,qs=.1,pn=.3,qn=.1,Kj=5,pj=.5,qj=.01,Ka=1000,pa=.5,s0=100,n0=0,j0=0,a0=0,modo="C") ### Comparar los últimos tres ejemplos: ¿a qué se debe que el comportamiento difiera tanto? ### "n" es la cantidad de períodos que transcurren desde el momento inicial. s0, n0, j0 y a0 son cantidades iniciales de semillas, plantines, árboles jóvenes y árboles adultos, respectivamente. Los demás parámetros cumplen el rol explicado en la clase. ### El modo "A" devuelve un vector de 2 componentes, que indican la cantidad de semillas y árboles en el período "n"). ### El modo "B" devuelve una matrix de 2xn, donde la primera fila da la cantidad de semillas en cada período de 1 a n y la segunda fila lo mismo para la cantidad de árboles. ### El modo "C" devuelve la misma matriz y además grafica la evolución de la cantidad de semillas y árboles. ########################################################################### ########################################################################### ########################################################################### arboles4<-function(n,ps,qs,pn,qn,Kj,pj,qj,Ka,pa,s0,n0,j0,a0,modo="A"){ M<-matrix(c(ps,qs,0,0,0,pn,qn,0,Kj,0,pj,qj,Ka,0,0,pa),4,4) if(modo=="A"){ D<-diag(eigen(M)$values) C<-eigen(M)$vectors Cinv<-solve(C) X_n<-C%*%D^n%*%Cinv%*%c(s0,n0,j0,a0) rownames(X_n)=c("Semillas","Plantines","Árb. jóvenes","Árb. adultos") colnames(X_n)=c("Per. n") return(list(Diagonal=D,C=C,InversaC=Cinv,Cant_final=X_n)) }else if(modo=="B"|modo=="C"){ X<-matrix(NA,4,n+1) rownames(X)=c("Semillas","Plantines","Árb. jóvenes","Árb. adultos") colnames(X)<-0:n X[,1]<-c(s0,n0,j0,a0) for(k in 2:(n+1)){ X[,k]<-M%*%X[,k-1] } if(modo=="C"){ par(mfrow=c(4,1),bty="l",mai=c(.3,1,.2,.3),pch="*") plot(X[1,],col="darkred",xlab="",ylab="Semillas",ylim=c(0,max(X[1,]))) plot(X[2,],col="darkgreen",xlab="",ylab="Plantines",ylim=c(0,max(X[2,]))) plot(X[3,],col="darkorange",xlab="",ylab="Árb. jóvenes",ylim=c(0,max(X[3,]))) plot(X[4,],col="darkred",xlab="",ylab="Árb. adultos",ylim=c(0,max(X[4,]))) } return(X) }else{ return("Modo no válido.") } }