====== Crescimento Logístico ====== Nosso primeiro modelo de crescimento populacional assumia que a população não experimentava qualquer tipo de restrição ambiental e consequentemente as taxas per capitas de natalidade e mortalidade permaneciam constantes. Nesses casos, qualquer flutuação experimentada na população (p.ex.: Estocasticidade Ambiental) é independente da densidade. Sabemos que populações tem regulações que dependem da densidade dela própria, como por exemplo a competição intraespecífica. Vamos ajustar nosso modelo anterior então para incorporar essa dependência da densidade. Voltemos a nosso modelo básico, só que agora as taxas de mortalidade são denso-dependentes: * $ \frac{dN}{dt} = (b' - d')N $ sendo: * $b' = b - aN$ * $d' = d + cN$ Nesse caso estamos dizendo que a taxa de natalidade é uma função linear do número de indivíduos com o intercepto na taxa de natalidade independente da densidade. Em outras palavras: a natalidade dependente da densidade, quando a população é pequena está próxima a uma taxa independente da densidade e diminui em um ritmo constante (**//a//**) conforme a população aumenta. Podemos utilizar a mesma lógica para a mortalidade, com a diferença que nesse caso a taxa aumenta conforme a população aumenta a uma taxa //**c**//. Agora a taxa instantâneo de variação na população é: $\frac{dN}{dt} = [(b-aN) - (d + cN)]N $ O que não é diferente de((veja demonstração em Gotelli)): $$ \frac{dN}{dt} = rN[1- \frac{(a+c)}{(b-d)}N] $$ Como a, b, c e d são constantes, podemos chamar: $K= \frac{(b-d)}{(a+c)}$ onde K é a capacidade de suporte do sistema. Ou seja, quantos indivíduos daquela população o ambiente é capaz de sustentar. Podemos associar ele a uma quantidade finita de recursos, lembrando que o esgotamento do recurso vai afetando as taxas de natalidade e mortalidade gradativamente. Substituindo na nossa equação diferencial: $$\frac{dN}{dt} = rN(1- \frac{N}{K}) $$ A expressão em parênteses da equação diferencial acima pode ser interpretada biologicamente como a fração não utilizada da capacidade de suporte. Quais as situações de equilíbrio da equação diferencial de crescimento logístico? Quando a taxa instantânea é zero: * $\frac{dN}{dt} = 0 $ Nesse caso temos as seguintes situações possíveis * N=0; *r=0; * $1 - \frac{N}{K} = 0 $ ou $ N=K $ Vamos representar isso graficamente no R para uma população onde: - r =1 - K = 100 ############################### dn.dt=function(r,N,K){(r*N*(1-N/K))} taxa<-dn.dt(r=1,N=0:120, K=100) plot(0:120, taxa, type="l", ylab="dn/dt", xlab="N") abline(h=0) ## adicionando pontos com legendas Np<-c(0,10, 50,100,110) dn.p<-dn.dt(r=1,N=Np, K=100) points(Np,dn.p ,cex=1.6) text(Np, dn.p, letters[1:5], adj=c(0.5,2)) ## direção de mudança no N arrows(20,2,80,2,length=0.1,lwd=3) arrows(122,-2, 109,-2, length=0.1, lwd=3) ===== Simulando Populações ===== Vamos utilizar uma função que calcula o tamanho populacional através da solução algébrica da equação diferencial $\frac{dN}{dt}=rN(1-\frac{N}{K})$ apresentada no livro do Gotelli (2007), eq. 2.2.: $$ N_t= \frac{K}{1+(\frac{(K-N_0)}{N_0})e^(-rt)}$$ Como somos desconfiados, assim como todo cientista, resolvemos colocar em prova a resolução apresentada pelo Gotelli. Use o Maxima (ou o site do [[http://www.wolframalpha.com/]]) ((a expressão que deve ser colocada no site é: n'(t)=n(t)*r*(1- n(t)/K) ))para resolver a equação diferencial do Crescimento Logístico, dicas: * lembre-se que a constante de integração (%c) é indeterminada e para chegar a uma expressão que faça sentido deve, em algum momento na simplificação da resolução, resolver a equação para o estado inicial $t= 0$, assim substitui o %c por uma expressão que contém N0: a situação inicial de nossa população. * caso não consiga simplificar a expressão para chegar à mesma representação, não desespere... é difícil mesmo! Vc. pode alternativamente, testar se a expressão resultante, isolada para N(t), produz o mesmo resultado que a solução do Gotelli, simulando populações com as duas expressões e comparando os resultados em gráficos. Nossa função tem os seguintes parâmetros: - No = tamanho inicial; - r = taxa de crescimento intrínseco; - K = capacidade suporte; - tseq = sequência de tempos onde o tamanho da população será computado\\ Nossa função retorna o vetor de valores da população em cada um dos tempos de //tseq//. Veja como é simples, copie e cole no console do R: cresc.log=function(N0=10, r=0.05, K=80, tseq=1:100) { resulta=K/(1+((K-N0)/N0)*exp(-r*tseq)) return(resulta) } Vamos agora ver como ela funciona: cresc.log(N0=1, r=0.1, K=100, tseq=1:100) Ela nos retorna os valores em cada tempo, podemos então construir o gráfico da trajetória da nossa primeira população simulada: pop1<-cresc.log(N0=1, r=0.1, K=100, tseq=1:100) plot(1:100, pop1,type="l", xlab="tempo", ylab="N") title(sub="N0 =1; r=0.1; K=100") Agora vamos simular várias populações com mesmos //r// e //K//, variando apenas o tamanho inicial. ################################## ### o efeito do tamanho inicial ## ################################## N0.seq=c(1,(1:12)*10) tmax=100 res.mat=matrix(NA, ncol=length(N0.seq),nrow=tmax+1) for(i in 1:length(N0.seq)) { res.mat[,i]<-cresc.log(N0=N0.seq[i],r=0.1,K=100,tseq=0:tmax) } matplot(0:100,res.mat,type="l", col=rainbow(length(N0.seq)), lty=1:13) Vamos simular agora a variação apenas na capacidade suporte das populações: ##################################### ### O Efeito da Capacidade Suporte ## ##################################### K.seq=(1:12)*10 tmax=100 resK.mat=matrix(NA, ncol=length(K.seq),nrow=tmax+1) for(i in 1:length(K.seq)) { resK.mat[,i]<-cresc.log(N0=1,r=0.1,K=K.seq[i],tseq=0:tmax) } matplot(0:100,resK.mat,type="l", col=rainbow(length(N0.seq)), lty=1:13) text(rep(90, length(K.seq)),K.seq+2, labels=paste("K =",K.seq),cex=0.8) ===== Integração Numérica do Crescimento Logístico ===== {{:exercicios:poptrem.jpg?200 | }}A regessão logística é uma equação diferencial ordinária. Podemos resolver essa equação para um dado intervalo de tempo utilizando integração numérica. A técnica consiste basicamente em transformar os passos infinitamente pequenos do cálculo (dx) em passos muito pequenos, porém finitos. O pacote deSolve do R contém a função ode que faz o serviço por nós! Abaixo descrevemos um função básica para integração numérica da função logística. Precisamos primeiro definir a função básica, no caso uma logística contínua. Vamos usar a função do livro do Gotelli (equação 2.1, pag. 28 ) # função de crescimento logístico clogistico<-function(tempo, y, parms) { n<-y[1] r<-parms[1] K<-parms[2] dN.dt<-r* n* (1- n/K) return(list(c(dN.dt))) } Vamos agora especificar os parâmetros dessa função parametros=c(r=1,K=100) N0= 1 st=seq(0.1,10, by=0.1) Agorar utilizando o pacotes **deSolve** para a integração numérica dessa função library(deSolve) res<-ode(y=N0, times=st, clogistico, parms=parametros) str(res) head(res) Agora só falta fazer o gráfico: plot(res[,1], res[,2], main="Crescimento Logístico", type="l", xlab="Tempo", ylab="N", col="red" ) legend("topleft", "N0=1;r = 1; K = 100", bty="n") * 1. Repita algumas das simulações anteriores e verifique se a solução numérica é realmente uma aproximação da analítica mostrando a trajetória de algumas populações simuladas. ====== Estocasticidade Ambiental ====== Vamos partir da equação logística acima e sua solução integração numérica para criar uma situação com estocasticidade ambiental. No caso do modelo exponencial a estocasticidade estava representada por uma variação no //r//, na logística vamos modelar a uma variação aleatória na capacidade de suporte. Nessa função teremos três parâmetros: * r: taxa de crescimento populacional * K: capacidade de suporte * varK: uma variância do K clogEst <- function(times,y, parms) { n<-y[1] r<-parms[1] K<-rnorm(1,mean=parms[2],sd=sqrt(parms[3])) dN.dt<-r* n* (1- n/K) return(list(c(dN.dt))) } y0 = c(10) prmt=c(r=0.15, K=30, varK=20) st=seq(0,100,by=0.01) res.clogEst= ode(y=y0,times=st, func=clogEst,parms=prmt) plot(res.clogEst[,1], res.clogEst[,2], type="l", col="red",lwd=2, xlab="tempo", ylab="y") * Use as simulações com estocasticidade ambiental para reponder: * Qual parâmetros aumentam a amplitude da oscilação e qual a interpretação biológica? * É possível ocorrer extinção da população com taxas de crescimento positivo? Demonstre com simulações. ====== Crescimento Logístico com Retardo ====== O crescimento logístico com retardo pode ter trajetórias diferentes, como vimos nos modelos logísticos com crescimento discreto. Vamos simular algumas trajetórias para esses modelos contínuos com retardo. A solução numérica de uma equação diferencial não é trivial! Para tanto vamos usar o pacote **PBSddsolve** do R. #se ainda nao tem o pacote, instalar com o comando: install.packages("PBSddesolve") require(PBSddesolve) clogDelay <- function(t,N,parms) { if (t < parms[3]) lag <- parms[4] else lag <- pastvalue(t - parms[3]) n<-lag r<-parms[1] K<-parms[2] dN.dt<-r* n* (1- n/K) return(list(c(dN.dt))) } #defina os valores da iniciais da população e os parâmetros N0= 10 parametros=c(r=3.7,K=100, retardo=0.5, initial=N0) # solucione a derivação numérica com retardo pop <- dde(y=N0,times=seq(0,100,0.1),func=clogDelay ,parms=parametros) # veja a estrutura do objeto que guardou os resultados str(pop) # faça um gráfico plot(pop$t, pop$y1, type="l", col="red", xlab="tempo", ylab="Numero de indivíduos", main="Crescimento Logistico com retardo") Simule algumas populações: * utilize valores onde r*retardo < 0,36 * entre 0.36 e 1,5 * maior de 1,5 Apresente as simulações anteriores em gráficos e discorra sobre o que está acontecendo nesses intervalos de valores e o significado de //r* retardo// ===== Crescimento Logístico Avançado ===== Estamos preparando um tutorial avançada de Crescimento Logístico, opcional nesse curso. Por enquanto temos os seguintes tópicos preparados preliminarmente: * [[exercicios:exe3iv#Crescimento Logístico Discreto|]] * [[exercicios:exe3iv#Um atrator no crescimento logístico discreto|]] * [[exercicios:exe3iv#Bifurcação do Atrator|]] Os tópicos abaixo estão em preparação: * Generalização do Modelo Densidade Dependente * Extração Máxima Sustentável de Populações com Densidade Dependente * Ajustando modelos densidade dependente a dados empíricos