Essa é uma revisão anterior do documento!
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:
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 de1):
$$ \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.
<box green 70% | Equilíbrio>
Quais as situações de equilíbrio da equação diferencial de crescimento logístico?
Quando a taxa instantânea é zero:
Nesse caso temos as seguintes situações possíveis
</box>
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)}$$
<box red 80%|Exercício 1: Resolução Algébrica >
Como você é desconfiado,, assim como todo bom cientista, resolveu colocar em prova a resolução apresentada pelo Gotelli. Use o Maxima para resolver a equação diferencial do Crescimento Logístico e prove que a equação encontrada é equivalente à solução do Gotelli.
Dicas:
lembre-se que a constante de integração (%c) é equivalente ao estado inicial (N0)
caso não consiga simplificar a expressão para chegar a mesma representação, demonstre com a simulação da trajetória de populações com mesmas características
Faça o exercício apenas depois do Roteiro! Ele vai ajudá-lo nas simulações de populações
</box>
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")
<box green 90%| Efeito do Tamanho Inicial da População >
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)
</box>
<box green 90%| Efeito da Capacidade Suporte >
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(N0.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)
</box>
Integração Numérica do Crescimento Logístico
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")
<box red 70% |Exercício 2>
Exercícios
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. Nessa função teremos três parâmetros:
clogEst <- function(times,y, parms)
{
n<-y[1]
r<-rnorm(1,mean=parms[1],sd=sqrt(parms[2]))
K<-parms[3]
dN.dt<-r* n* (1- n/K)
return(list(c(dN.dt)))
}
y0 = c(1)
prmt=c(rmedio=0.1, varr=0.1, K=10)
st=seq(0.1,200,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")
<box red 70%| Exercício>
Use as simulações com estocasticidade ambiental para reponder:
Qual parâmetros aumentam a amplitude da oscilação e qual o paralelo com a biologia?
É possível ocorrer extinção da população com taxas de crescimento positivo? Demonstre com simulações.
</box>
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.
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:
<box 50% red | Exercício 4>
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
</box>
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:
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