Preview only show first 10 pages with watermark. For full document please download

Logist

Segundo exercício programa de MAP2121 - Cálculo numérico. Modelos populacionais.(2005)

   EMBED


Share

Transcript

MAP-2121 - Segundo Exerc´ıcio Programa - 2005 Instru¸ co ˜es gerais Os exerc´ıcios computacionais pedidos na disciplina C´ alculo Num´erico tˆem por objetivo fundamental familiarizar o aluno com problemas pr´ aticos que requeiram t´ecnicas num´ericas em sua solu¸ca˜o. Neste programa sua tarefa ser´ a estudar alguns modelos de crescimento populacional baseados em equa¸co˜es diferenciais e resolvˆe-los por m´etodos num´ericos. Seu programa deve ser entregue no Panda at´e o dia 20 de novembro. N˜ ao deixe para fazˆe-lo no final do prazo. O programa deve ser escrito em Linguagem C e ser compilado e executado com o compilador dispon´ıvel atrav´es do Panda. Caso vocˆe desenvolva seu programa em outro compilador, confira se ele tamb´em compila e executa na vers˜ ao sugerida no Panda. Programas que n˜ ao compilarem ter˜ ao notas muito baixas. N˜ ao deixe de comentar seu programa, os coment´ arios ser˜ ao considerados na corre¸ca˜o. O seu programa deve ser desenvolvido por vocˆe individualmente. Haver´ a controle de c´ opias e caso estas sejam detectadas, os envolvidos ter˜ ao nota zero no programa e o caso ser´ a levado a` coordena¸ca˜o do biˆenio. Modelos Populacionais Nesta tarefa vamos estudar alguns modelos populacionais. Possivelmente o modelo mais simples ´e aquele em que a velocidade de crescimento de uma popula¸ca˜o ´e proporcional ao seu pr´ oprio tamanho. Sendo p(t) o tamanho da popula¸ca˜o em um instante de tempo t, sua varia¸ca˜o ´e dada pela derivada p 0 (t). Obtemos ent˜ ao a equa¸ca˜o: p0 (t) = λp(t) , (1) onde λ > 0 e cuja solu¸ca˜o geral ´e dada por p(t) = ce λt . A constante c fica unicamente determinada se soubermos o tamanho inicial da popula¸ca˜o p(t 0 ) em um instante inicial t0 , como c = p(t0 )e−λt0 . Este modelo, de crescimento exponencial da popula¸ca˜o, admite que esta cres¸ca ilimitadamente. Este crescimento ilimitado ´e em geral n˜ ao muito real´ıstico, o que limita a validade deste modelo. Vamos ver um modelo mais interessante. O Modelo Log´ıstico Neste modelo leva-se em conta que para sua sobrevivˆencia uma popula¸ca˜o necessita de recursos naturais que n˜ ao s˜ ao inesgot´ aveis. Este modelo ´e dado pela equa¸ca˜o diferencial: p0 (t) = λp(t)(1. − p(t) ) , M (2) onde λ > 0 e M > 0 representa um valor de satura¸ca˜o da popula¸ca˜o em fun¸ca˜o dos recursos dispon´ıveis. Note que se a popula¸ca˜o ´e pequena em rela¸ca˜o ao 1 valor de M , a taxa de crescimento se comporta aproxidamente como no modelo exponencial. No entanto, quando p(t) se aproxima de M o crescimento vai se aproximando de zero. Atrav´es da equa¸ca˜o, mesmo sem resolvˆe-la, podemos analisar qualitativamente o que ocorre. Para valores da popula¸ca˜o entre 0 e M , a popula¸ca˜o ir´ a crescer a taxas vari´ aveis (sendo o maior valor atingido quando p(t) = M/2; tente mostrar isto!). Caso a popula¸ca˜o em algum instante (digamos, no in´ıcio) fosse maior que M , esta iria decrescer. Note que h´ a dois valores de equil´ıbrio para o tamanho da popula¸ca˜o: 0 e M . Caso a popula¸ca˜o inicial tivesse um destes tamanhos, ela permaneceria constante ao longo do tempo. Estes dois valores de equil´ıbrio s˜ ao de natureza diferente. Caso o valor inicial da popula¸ca˜o se afaste um pouco de 0 (estamos aqui s´ o considerando os valores positivos), ir´ a crescer, se afastando cada vez mais de 0. Por outro lado, se o valor da popula¸ca˜o inicial se afasta um pouco de M , ele tende a voltar para M com o passar do tempo. A equa¸ca˜o (2), chamada equa¸ca˜o log´ıstica, tem como solu¸ca˜o geral: M p(t) = , (3) 1. + ce−λt e fixada a popula¸ca˜o inicial p(t0 ), determina-se unicamente a solu¸ca˜o, com o −p(t0 ) λt0 e . Verifique que a fun¸ca˜o dada ´e realmente solu¸ca˜o da valor de c = Mp(t 0) equa¸ca˜o (2) e que as considera¸co˜es qualitativas que fizemos, podem ser observadas atrav´es da solu¸ca˜o anal´ıtica. O Modelo Presa-Predador Este modelo considera a intera¸ca˜o entre esp´ecies, habitantes de um mesmo ambiente. Como exemplo, vamos tomar uma popula¸ca˜o de coelhos e uma de raposas, vivendo em uma ilha. Os coelhos, vegetarianos, se alimentam dos recursos naturais da ilha. As raposas, carn´ıvoras, se alimentam dos coelhos. O modelo presa-predador ´e formulado atrav´es das equa¸co˜es: c0 (t) = αc(t)(1 − c(t) ) − βr(t)c(t) M r0 (t) = γr(t)c(t) − δr(t) , (4) (5) onde para cada configura¸ca˜o inicial, com c(t 0 ) coelhos e r(t0 ) raposas, h´ a uma u ´nica solu¸ca˜o. Os parˆ ametros α, β, γ e δ s˜ ao todos positivos. Vamos inicialmente procurar entender o significado dos termos das equa¸co˜es. No caso de n˜ ao haver raposas na ilha (r(t0 ) = 0), note que a popula¸ca˜o de raposas ir´ a permanecer inalterada e a popula¸ca˜o de coelhos ir´ a se comportar como no modelo log´ıstico. Por outro lado, se n˜ ao houver coelhos na ilha (c(t 0 ) = 0), a popula¸ca˜o de raposas se comporta como no modelo exponencial (com taxa negativa), tendendo rapidamente a` extin¸ca˜o por falta de alimentos. O termo −βr(t)c(t) na equa¸ca˜o (4) modela a varia¸ca˜o negativa na popula¸ca˜o de coelhos, devido a seus desagrad´ aveis encontros com raposas. J´ a o termo γr(t)c(t) responde pelo crescimento da popula¸ca˜o de raposas, quando bem alimentadas. Vamos agora analisar quais seriam os pontos de equil´ıbrio deste modelo, ou seja, quando c0 (t0 ) = 0 e r 0 (t0 ) = 0 simultaneamente (nestes casos, as 2 duas popula¸co˜es permaneceriam inalteradas ao longo do tempo). Temos que c0 (t0 ) = 0 quando c(t0 ) = 0, ou para c(t0 ) = M e r(t0 ) = 0, ou ainda para c(t0 ) 0 r(t0 ) = α β (1 − M ). Para que tenhamos r (t0 ) = 0 temos que ter r(t0 ) = 0 ou ao: c(t0 ) = γδ . Combinando as condi¸co˜es, vemos que os pontos de equil´ıbrio s˜ δ (c(t0 ), r(t0 )) = (0, 0), (c(t0 ), r(t0 )) = (M, 0) e (c(t0 ), r(t0 )) = ( γδ , α (1 − β M γ )). Para que o valor de r(t0 ) seja positivo na u ´ltima express˜ ao, ´e necess´ ario que δ < M . Caso contr´ a rio, s´ o haver´ a dois pontos de equil´ ıbrio na regi˜ a o onde o γ modelo faz sentido, ou seja, no quadrante onde tanto r como c s˜ ao positivos. Modelos deste tipo foram propostos e estudados originalmente por Alfred James Lotka, austr´ıaco, e por Vito Volterra, italiano, por volta de 1920. Analisando qualitativamente as equa¸co˜es, em especial quando as derivadas c 0 (t) e r0 (t) s˜ ao positivas ou negativas, como deve ser o comportamento da solu¸ca˜o (ou seja, a evolu¸ca˜o das esp´ecies a partir de uma configura¸ca˜o inicial)? Para tal ´e interessante pensar em como seriam os gr´ aficos de c e r em fun¸ca˜o de t. Outra forma de olhar para esta evolu¸ca˜o, ´e considerar o plano c, r, ou seja, procurar ver como r(t) varia em fun¸ca˜o de c(t), ou vice-versa. No plano c, r, partindo do ponto (c(t0 ), r(t0 )), a solu¸ca˜o descreve uma curva (c(t), r(t)), parametrizada pelo tempo t. Estas curvas descritas pela solu¸ca˜o, s˜ ao chamadas de o´rbitas das equa¸co˜es (4) e (5). Resolvendo as equa¸ co ˜es diferenciais numericamente Em uma equa¸ca˜o diferencial procura-se determinar uma fun¸ca˜o x(t) satisfazendo uma rela¸ca˜o do tipo: x0 (t) = f (t, x(t)) (6) No caso geral x(t) ´e uma fun¸ca˜o definida em algum intervalo real, tomando valores em Rn (ou seja, x(t) = (x1 (t), x2 (t), ..., xn (t)), onde cada xi (t) ´e uma fun¸ca˜o real). Nos modelos que vimos, temos n = 1 no caso da equa¸ca˜o log´ıstica e de crescimento exponencial, e n = 2 no modelo presa-predador (com x 1 (t) = c(t) e x2 (t) = r(t)). A fun¸ca˜o f (t, x(t)) ´e definida em R n+1 e assume valores em Rn . Quando f (t, x(t)) n˜ ao depende explicitamente de t, ou seja, f (t, x(t)) = f (x(t)), como nos modelos que consideramos, a equa¸ca˜o ´e dita autˆ onoma. Nem sempre ´e poss´ıvel resolver equa¸co˜es diferenciais de forma anal´ıtica, sendo portanto necess´ ario o uso de m´etodos num´ericos. Equa¸co˜es diferenciais s˜ ao vitais para a modelagem de in´ umeros fenˆ omenos e este assunto tem portanto grande relevˆ ancia. Apresentaremos a seguir dois m´etodos para solu¸ca˜o num´erica de equa¸co˜es diferenciais. Vamos ter por hip´ otese que as solu¸co˜es s˜ ao duas vezes continuamente diferenci´ aveis em nossa apresenta¸ca˜o. M´ etodo de Euler Considerando o polinˆ omio de Taylor da fun¸ca˜o x(t) obtemos: x(t + h) = x(t) + x0 (t)h + x00 (t˜)h2 /2 3 onde t˜ se encontra entre t e t + h. Desta express˜ ao temos: x(t + h) − x(t) = x0 (t) + x00 (t˜)h/2 h Se agora impusermos que x(t) ´e solu¸ca˜o da equa¸ca˜o diferencial (6) obtemos que: x(t + h) − x(t) = f (t, x(t)) + x00 (t˜)h/2 h O m´etodo de Euler ir´ a empregar a aproxima¸ca˜o x(t + h) − x(t) = f (t, x(t)) h sendo o erro cometido proporcional a h. Partindo do instante inicial t 0 onde conhecemos o valor inicial x0 da solu¸ca˜o, calcularemos sucessivamente as aproxima¸co˜es xi+1 = xi + hf (ti , xi ) onde ti = t0 + ih, e xi ´e a aproxima¸ca˜o de x(ti ). Calculamos a solu¸ca˜o at´e um instante final tf em n passos, onde nh = tf − t0 . Por exemplo, na equa¸ca˜o x0 (t) = x(t) com x(0) = 1, temos a sequˆencia xi+1 = xi + hxi = (1 + h)xi . Se tomamos tf = 1 e h = 1/n obtemos a aproxima¸ca˜o para o valor de x(1): xn = (1 + h)xn−1 = (1 + h)n x0 = (1 + 1/n)n Sabemos que a solu¸ca˜o da equa¸ca˜o ´e x(t) = et e portanto x(1) = e. Vocˆes j´ a viram em c´ alculo que limn→∞ (1 + 1/n)n = e. Assim, a aproxima¸ca˜o obtida pelo m´etodo de Euler para o valor da solu¸ca˜o no instante 1 converge para o valor exato se fizermos o espa¸camento h = 1/n entre dois instantes consecutivos tender a zero. Resumindo, se desejamos aproximar a solu¸ca˜o da equa¸ca˜o diferencial (6) no intervalo de tempo [t0 , tf ], subdividimos este intervalo em n partes de comprimento h = (tf − t0 )/n e aproximamos a solu¸ca˜o em cada instante ti = t0 + ih, i = 0, ..., n, a partir de seu valor inicial x0 , computando: xi+1 = xi + hf (ti , xi ), i = 0, ..., n − 1 Observa¸ c˜ ao: nos modelos autˆ onomos que consideramos o m´etodo de Euler tem a forma xi+1 = xi + hf (xi ). 4 O M´ etodo de Euler Modificado O M´etodo dos trap´ezios usa a aproxima¸ca˜o: x(t + h) − x(t) f (t, x(t)) + f (t + h, x(t + h)) = + O(h2 ) h 2 (7) Comparando com o m´etodo de Euler vemos que o erro na aproxima¸ca˜o da derivada de x(t) passa a ser de ordem h2 (procure mostrar este fato, para x(t) solu¸ca˜o de (6), usando polinˆ omio de Taylor), ao inv´es de ordem h, o que levar´ a a uma convergˆencia mais r´ apida. O m´etodo dos trap´ezios fica ent˜ ao dado por: xi+1 = xi + h (f (ti , xi ) + f (ti+1 , xi+1 )) 2 (8) partindo do valor inicial x0 e com os instantes de tempo definidos como no m´etodo de Euler. Temos no entanto que o valor de x i+1 ´e usado em sua pr´ opria defini¸ca˜o em (8), resultando em uma equa¸ca˜o a ser resolvida a cada passo. O M´etodo de Euler Modificado primeiro estima o valor de x i+1 pelo m´etodo de Euler e depois o corrige pelo m´etodo dos trap´ezios. Ele tem a forma: k1 = xi + hf (ti , xi ) h (f (ti , xi ) + f (ti+1 , k1)) 2 e resulta em um m´etodo de ordem 2 (o erro ´e proporcional a h 2 ). xi+1 = xi + O seu programa Parte a) Vocˆe deve implementar os m´etodos de Euler e Euler Modificado para resolver uma equa¸ca˜o diferencial linear do tipo (6), onde x(t) ´e uma fun¸ca˜o real e f (t, x) ´e uma fun¸ca˜o de R2 em R. Dados os valores t0 e tf , o valor inicial x0 e o valor de n, seu programa deve calcular as aproxima¸co˜es x 1 a xn da solu¸ca˜o de (6) nos pontos ti = t0 + ih, onde h = (tf − t0 )/n. Teste o programa para resolver a equa¸ca˜o log´ıstica (2), partindo de p(0) = 20, de t 0 = 0 at´e tf = 2, com λ = 10 e M = 500. Al´em disso vocˆe deve determinar o maior erro cometido no intervalo [0,2], comparando a solu¸ca˜o exata (3) com sua aproxima¸ca˜o nos pontos ti , i = 0, ..., n. Deve ser impresso apenas o valor do maior erro, em m´ odulo. Isto deve ser feito para os valores de n iguais a 100, 200, 400, 800 e 1600. Imprima tamb´em a raz˜ ao entre os erros m´ aximos para os valores consecutivos de n (que correspondem a` redu¸ca˜o de h pela metade a cada passo). Estas raz˜ oes ir˜ ao evidenciar as ordens de convergˆencia 1 do m´etodo de Euler e 2 do Euler Modificado. Parte b) Implemente o m´etodo de Euler Modificado para a solu¸ca˜o do modelo presa-predador. Note que neste caso x(t) = (c(t), r(t)). Utilize os seguintes parˆ ametros: α = 10., β = 0.1, γ = 1., δ = 200., t0 = 0, tf = 3. Os parˆ ametros est˜ ao ajustados, de forma que cada unidade de tempo corresponde a 7 anos de vida na ilha dos coelhos e raposas. Vocˆe deve testar com as condi¸co˜es iniciais (c(0), r(0)) = (100, 15) e (c(0), r(0)) = (501, 2). Em cada caso, seu modelo deve 5 imprimir o valor da solu¸ca˜o a cada 0.5 unidades de tempo. O valor de h a ser utilizado deve ser determinado por vocˆe experimentalmente, de tal forma que a solu¸ca˜o nos pontos de impress˜ ao tenha praticamente convergido. Use como crit´erio que os valores obtidos com espa¸camento h e h/2 n˜ ao difiram mais que 0.5 em cada ponto de impress˜ ao (tanto para coelhos como para raposas). Para que vocˆe realmente possa acompanhar a solu¸ca˜o, vocˆe deveria imprimir a solu¸ca˜o a cada h e plotar os gr´ aficos de c(t) em fun¸ca˜o de t, de r(t) em fun¸ca˜o de t e (mais interessante) de r em fun¸ca˜o de c. Estes gr´ aficos v˜ ao ajud´ a-lo a interpretar a solu¸ca˜o. Para a entrega do programa, no entanto, imprima apenas nos pontos de impress˜ ao solicitados. Divirtam-se! 6