Matriz de Leslie

Criar uma função para verificar crescimento de uma população com estrutura etária utilizando uma matriz.

Argumentos

Argumentos definidos:

  • A (Matriz)
  • No (tamanho populacional inicial)

Código da Função

projmat=function(A,n0)
{
if (dim(A)[1]!=dim(A)[2]  | dim(A)[2]!=dim(n0)[1])
      {
       stop ("\n Matriz de projeção e vetor da população não possuem dimensões compatíveis \n")
      }
  resulta=matrix(n0,nrow=1)
t <- 1  ## cria um contador para indexar os ciclos
difprop <- 1  ## cria um valor de tolerância para a diferença no primeiro ciclo

while(t<=1000 & difprop > 0.00001)  ### limita os ciclos
{
  nt <- matrix(resulta[t,],ncol=1)
  ntplus <- A %*% nt
  resulta <- rbind(resulta,t(ntplus))
  Nt <- sum(resulta[t,])
  Ntplus <- sum(resulta[t+1,])
  difprop <- max(abs(resulta[t,]/Nt-resulta[t+1,]/Ntplus))
  t <- t+1
  }
plot(1:nrow(resulta),resulta[,1],type="l",lwd=2,xlab="tempo",ylab="nº de indivíduos",ylim=(c(c(0,max(resulta)*1.02))))
 for (i in 1:ncol(resulta))
{
lines(1:nrow(resulta),resulta[,i],lwd=2,lty=i, col=i)
}
legend("topleft", legend=paste("classe",1:ncol(resulta)),lty=1:ncol(resulta),col=1:ncol(resulta))
diest1<- round(resulta[t,]/sum(resulta[t,]),3)
cat("Distribuição de idades estável com base na projeção:\n",diest1,"\n")
lambda<-sum(resulta[t,])/sum(resulta[t-1,])
cat("Lambda com base na projeção = " , round(lambda,3),"\n\n")
auto<-eigen(A)
lambda2<-max(abs(auto$values))
diest2<-(abs(auto$vectors[,1])/sum(abs(auto$vectors[,1])))
cat("Distribuição de idades estável com base na matrix:\n",round(diest2,3),"\n")
cat("Lambda com base na matrix = " , round(lambda2,3),"\n\n")
return(resulta)
}

#### Criando uma matrix
##A<-rbind(c( 0.5000 , 1.0 , 0.75 ),c( 0.6666 , 0 , 0 ),c( 0 , 0.3333 , 0 ))
##n0<- matrix(c(20,0,0),ncol=1)

###Analisando os dados pela função

##projmat(A,n0)

Arquivo da Função

Discussão dos Resultados

alunos2009/ricardo/matriz_de_leslie.txt · Última modificação: 2024/01/09 18:19 por 127.0.0.1
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0