Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
exercicios:exe3iv [2012/05/03 21:53] – edição externa 127.0.0.1exercicios:exe3iv [2024/01/09 18:18] (atual) – edição externa 127.0.0.1
Linha 1: Linha 1:
-====== Integração Numérica do Crescimento Logístico  ====== +====== Variações do Modelo Logístico ====== 
-{{:ecopop: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 (dxem 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.1pag28 )+==== Crescimento Discreto Análogo ao Modelo Logístico ==== 
 +Abaixo apresentamos o código do crescimento discreto análogo ao crescimento logístico((não é uma solução em  tempo discreto)), como apresentado no livro do Gotelli(2007eq2.4),  e simulamos uma população: 
 <code> <code>
-função de crescimento logístico  +############################ 
-clogistico<-function(tempoyparms)+### Crescimento Discreto ### 
 +############################ 
 + 
 +discrLog=function(N0=1, rd=0.05K=100tmax=100)
 { {
-n<-y[1] +resulta=rep(N0,tmax) 
-r<-parms[1] + for(t in 2:tmax) 
-K<-parms[2] +
-dN.dt<-rn* (1- n/K) + lastN=resulta[t-1] 
-return(list(c(dN.dt)))+ resulta[t]=lastN+rd*lastN*(1-lastN/K) 
 + } 
 +return(resulta)
 } }
-</code> 
-Vamos agora especificar os parâmetros dessa função 
  
-  parametros=c(r=1,K=100) +pop2<-discrLog(N0=1, rd=0.05, K=100, tmax=100) 
-  N0= 1 +plot(1:100,pop2, pch=16, col="red",xlab="tempo (gerações)", ylab="Tamanho da população (N)", bty="l", cex.lab=1.2, cex.axis=1.2)  
-  st=seq(0.1,10by=0.1)+lines(1:100pop2lty=2, cex=0.8)
  
-Agorar utilizando o pacotes **deSolve** para a integração numérica dessa função 
-<code> 
-library(deSolve) 
-res<-ode(y=N0, times=st, clogistico, parms=parametros) 
-str(res) 
 </code> </code>
  
-Agora só falta fazer gráfico:+<box 70% red | Exercício Caos Total> 
 +Assim como simulamos várias populações com tamanhos iniciais distintos, faça mesmo simulando populações com crescimento discreto variando o //rd// variando de 1 a 3, com capacidade de suporte fixa (K=100) e N0=10. 
 +  * Essas populações são estáveis? 
 +  * Acontece o mesmo ao simular populações com crescimento contínuo? 
 +  * O que acontece se mudarmos o K=50 ou a tamanho inicial da população, a trajetória da população se altera? 
 +  * Há alguma estocasticidade associada a esse modelo? Como comprovar? 
 +</box> 
 +====  Um atrator no crescimento logístico discreto ==== 
 +{{:exercicios:caos.jpg?200  |}} 
 +Vamos mostrar como a ordem subjacente a um comportamento caótico pode ser facilmente reconhecida através de uma representação gráfica.  Utilize o crescimento logístico discreto da projeção produzida acima, e represente N(t+1) contra N(t) em um gráfico. Tente primeiro com rd=0.05 e depois com rd=2.8. 
  
-<code+<box red 70%|Exercício: Atrator 
-plot(res[,1], res[,2], main="Crescimento Logístico", type="l", xlab="Tempo", ylab="N", col="red" ) +Um pseudocódigo explicita os passos para elaborar uma tarefa, abaixo nossa dica para realizar o exercício:  
-legend("topleft", "N0=1;r = 1; K = 100", bty="n"+  - Rodar a função criada no tópico anterior e  guardar o resultado no objeto //caos// 
-</code>+  - Dividir o dispositivo gráfico em duas colunas 
 +  - Criar o gráfico da projeção da população 
 +  - Produza a sequencia do objeto cao1 do segundo valor até o último ((dica: vc. pode usar a indexação "[-1]" )
 +  - Produza a sequencia de valores do objeto caos de 2:último ((aqui vc. pode também indexar "[-X]", sendo X o valor da última posição do objeto)
 +  - Criar o gráfico Nt x Nt-1 com as sequencias produzidas anteriormente 
 +  - Ligar os pontos do segundo gráfico
  
 +</box>
 +==== Bifurcação do Atrator ====
  
-===== Exercícios ===== +Até agora analisamos o tamanho populacional em função do tempo. Vamos analisar o tamanho populacional agora em função da taxa de crescimento discreta (rd) no modelo logístico. Queremos aqui ver qual o tamanho que a população converge se variarmos apenas a taxa de crescimento. 
-  * 1. Faça o gráfico de duas populações (//a// e //b//com crescimento logístico, ambas com mesma taxa de crescimento(r=0,10e mesma capacidade suporte (K100), porém com tamanhos iniciais diferentes (N0_a=5, N0_b=200)+Primeiro precisamos simular o crescimento populacional discreto para um conjunto de rd's e depois acertar os dados para compor um gráfico que nos mostre os valores de convergência da trajetória de cada população para diferentes rd's. Utilize o código abaixo.  
 +<code> 
 +N0=10  
 +K=100 
 +tmax=200 
 +nrd=10 
 +rd.s=seq(1,3,length=nrd) 
 +rd.s 
 +r1=sapply(rd.s, function(x){discrLog(N0=N0, rd=x, K=K,tmax=tmax)}) 
 +str(r1) ## veja estrutura do arquivo; 
 +r2=stack(as.data.frame(r1)
 +str(r2) ## veja como mudou!cada indice é relacionado à coluna antiga 
 +names(r2)=c("N""old.col") 
 +r2$rd=rep(rd.s,each=tmax) 
 +r2$tempo=rep(1:tmax, nrd) 
 +res.bif=subset(r2, tempo>0.5*tmax) ## pegando apenas o tempos maiores onde a população já deve ter convergido 
 +plot(N~rddata=res.bif, pch=".", cex=2)
  
-====== 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:  
-  * rmedio: uma taxa média do crescimento populacional 
-  * varr: uma variância do rmedio 
-  * K: capacidade de suporte 
- 
-<code> 
-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") 
 </code> </code>
-====== Crescimento Logístico com Retardo ====== 
-{{:ecopop:exercicios:lorenz3d.gif?200  |  }} 
-O crescimento logístico com retardo pode ter trajetórias muito complexas, 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.   
-<code> 
-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 +<box 70% red| Perguntas > 
-  N0= 10 +  * O resultado parece estranho? 
-  parametros=c(r=3.7,K=100, retardo=0.5, initial=N0)+  * Rode novamente aumentando o //**nrd**// para 200 
 +  * Descreva brevemente os padrões identificados nesse gráfico.
  
-# solucione a derivação numérica com retardo +</box>
-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")+
  
-</code> 
exercicios/exe3iv.1336082015.txt.gz · Última modificação: 2024/01/09 18:17 (edição externa)
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