Modelos de Competi¸c˜
ao e Preda¸c˜
ao
Segundo Exerc´ıcio Programa MAP3121
Para Engenharias de Produ¸c˜
ao, Petr´
oleo, Ambiental e Naval
Entrega: at´
e 22 de Junho de 2017
1
Introdu¸
c˜
ao
Nesta segunda tarefa vamos considerar a modelagem de competi¸c˜ao entre diferentes esp´ecies. Para o crescimento e sobrevivˆencia das esp´ecies s˜ao necess´arios recursos naturais dos quais elas dependem e se alimentam. Quando diferentes esp´ecies convivem e se nutrem de mesmos recursos, elas naturalmente estar˜ao competindo por estes, que normalmente s˜ao limitados. Essa competi¸c˜ao pode at´e vir a causar a extin¸c˜ao de uma das popula¸c˜oes competidoras, ou pelo menos afetar significativamente sua dinˆamica populacional. No meio ambiente podem tamb´em existir esp´ecies que se nutrem de outras. Estas s˜ao esp´ecies predadoras e suas v´ıtimas s˜ao as suas presas. Estes modelos de competi¸c˜ao encontram aplica¸c˜oes em diversas ´areas. Por exemplo, podemos ver empresas e fornecedores como esp´ecies, que se nutrem de clientes que demandam seus produtos. As empresas competem pelos clientes. Em agricultura, a existˆencia de pragas que atacam planta¸c˜oes ´e de grande importˆancia. Os efeitos podem ser modelados atrav´es da convivˆencia entre presas e predadores. Uma das ´areas em que tais modelos tˆem ampla aplica¸c˜ao ´e em meio Ambiente e Ecologia1.
O modelo log´ıstico
Vamos inicialmente considerar uma esp´ecie isolada, vivendo em ambiente que lhe fornece os recursos naturais de que necessita. O modelo exponencial de crescimento, uma primeira aproxima¸c˜ao normalmente utilizada, n˜ao ´e muito realista, pois pressup˜oe que uma popula¸c˜ao se multiplique indefinidamente `a mesma taxa, independentemente dos recursos naturais dispon´ıveis. O modelo log´ıstico, leva em considera¸c˜ao a limita¸c˜ao de recursos naturais, considerando uma taxa de crescimento que ir´a depender de como a popula¸c˜ao evolui. O crescimento ´e modelado pela equa¸c˜ao:
x0(t) = λx(t)(1 − x(t) M ) ,
onde M ´e um valor positivo de satura¸c˜ao da popula¸c˜ao. Se x(t) ´e pequeno ent˜ao x0(t) ≈ λx(t), ou seja o crescimento ´e aproximadamente exponencial. Conforme o valor de x(t) se aproxima de M a velocidade de crescimento diminui, com a popula¸c˜ao tendendo a um valor de equil´ıbrio. Para esta equa¸c˜ao, ´e poss´ıvel encontrar uma forma anal´ıtica para a solu¸c˜ao, dada por
x(t) = M
1 + (Mx
0 − 1)e
−λt ,
onde x0´e o tamanho inicial da popula¸c˜ao em t = 0. Verifique que x(t) ´e solu¸c˜ao da equa¸c˜ao diferencial,
que sua derivada ´e m´axima quando x(t) = M/2 e que o tamanho da popula¸c˜ao tende ao valor de equil´ıbrio M com o passar do tempo.
Competi¸
c˜
ao entre duas esp´
ecies
Sejam duas esp´ecies N1 e N2, as quais apresentam crescimento log´ıstico na ausˆencia da outra.
Vamos agora modelar o fato de que elas competem pelos recursos naturais. Ou seja, a presen¸ca de elementos de uma esp´ecie causa um decr´escimo na taxa de crescimento da outra. Para parametrizar esse
efeito, introduzimos um par de coeficientes de competi¸c˜ao α12 e α21, que descrevem o efeito da esp´ecie
2 sobre a esp´ecie 1 e da esp´ecie 1 sobre a esp´ecie 2, respectivamente. Assim teremos o sistema dN1(t) dt = λ1N1(t) 1 − N1(t) M1 − α12N1(t)N2(t) dN2(t) dt = λ2N2(t) 1 − N2(t) M2 − α21N1(t)N2(t)
onde M1 e M2 s˜ao os valores de satura¸c˜ao das popula¸c˜oes das respectivas esp´ecies e os coeficientes de
competi¸c˜ao s˜ao valores positivos.
O modelo tem um ponto de equil´ıbrio quando ambas as popula¸c˜oes se estabilizam. Isso ocorre quando N1= N2= 0, ou seja na ausˆencia das duas esp´ecies, ou quando simultaneamente N1= M1(1 − αλ12
1)N2
e N2 = M2(1 − αλ21
2 )N1. Cada uma destas equa¸c˜oes define uma reta no plano N1,N2. Caso elas se
interceptem no primeiro quadrante (ou seja, onde as popula¸c˜oes s˜ao positivas e o modelo faz sentido) existir´a um ponto de equil´ıbrio al´em da origem. Procure avaliar em que situa¸c˜oes (em fun¸c˜ao dos parˆametros α e λ) este equil´ıbrio ´e est´avel ou n˜ao. Al´em destes haver´a mais um ponto de equil´ıbrio em cada eixo, correspondendo a situa¸c˜oes em que uma das esp´ecies n˜ao est´a presente e a outra atingiu o valor de satura¸c˜ao. Procure determinar em fun¸c˜ao dos parˆametros α e λ quando as duas esp´ecies ir˜ao sobreviver, e quando uma delas tende `a extin¸c˜ao.
Modelo Presa-Predador
Vamos considerar agora um ambiente em que convivam duas esp´ecies, uma que se alimenta dos recursos naturais (digamos, uma popula¸c˜ao de coelhos) e uma segunda esp´ecie que se nutre basicamente da primeira esp´ecie (digamos, uma turma de raposas que se alimenta dos coelhos). O cl´assico modelo presa-predador, conhecido como modelo de Lotka-Volterra, considera recursos ilimitados, ou seja, na ausˆencia do predador, a popula¸c˜ao de suas presas apresentaria crescimento exponencial.
As equa¸c˜oes s˜ao dadas por:
x0(t) = λx(t) − αx(t)y(t) y0(t) = βx(t)y(t) − γy(t)
onde x(t) representa os coelhos e y(t) as raposas, e os parˆametros aparecendo nas equa¸c˜oes s˜ao todos constantes e positivos.
Neste caso, se inicialmente houver membros das duas esp´ecies no ambiente, o tamanho das respectivas popula¸c˜oes ir´a variar periodicamente no tempo. Isto significa que o retrato de fase ser´a composto por ´
orbitas peri´odicas, como ilustrado na figura abaixo.
Quando inserimos nas equa¸c˜oes a limita¸c˜ao de recursos naturais, na ausˆencia de raposas, os coelhos ter˜ao crescimento dado pela equa¸c˜ao log´ıstica. Observe que, como antes, na ausˆencia de coelhos as raposas vir˜ao a morrer de fome. O modelo ´e dado pelas equa¸c˜oes:
x0(t) = λx(t)(1 − x(t)/M ) − αx(t)y(t) y0(t) = βx(t)y(t) − γy(t)
onde os parˆametros s˜ao positivos e M ´e o valor de satura¸c˜ao da popula¸c˜ao de coelhos. Neste modelo j´a n˜ao teremos ´orbitas peri´odicas. Procure analisar a equa¸c˜ao e encontrar quais s˜ao as situa¸c˜oes de equil´ıbrio (onde as popula¸c˜oes ir˜ao se estabilizar, com ambas as derivadas nulas). Veja que mais informa¸c˜oes vocˆe consegue obter s´o de analisar os sinais das derivadas em fun¸c˜ao do tamanho das popula¸c˜oes.
Esse modelo pode ser expandido para uma competi¸c˜ao entre v´arias esp´ecies ou para a situa¸c˜ao de coexistˆencia de um predador que atinge mais de uma esp´ecie de presas, mas sua aplica¸c˜ao n˜ao se limita apenas a esse tipo de competi¸c˜ao de popula¸c˜oes. Alguns estudos utilizam uma vers˜ao adaptada desse modelo para an´alise de mercado, por exemplo, para estudar a concorrˆencia entre dois produtos ou a concorrˆencia de duas empresas de telefonia, entre outros.
O modelo 2 presas - 1 predador
Vamos considerar agora que mais uma esp´ecie conviva com os coelhos e as raposas, digamos uma po-pula¸c˜ao de lebres que tamb´em se alimente apenas dos recursos naturais. Ou seja, coelhos e lebres estar˜ao competindo pelos mesmos recursos. Por outro lado, as raposas poder˜ao se alimentar tanto de coelhos como de lebres. A equa¸c˜ao do modelo pode ser posta na forma:
x0(t) = x(t)(B1− A1,1x(t) − A1,2y(t) − A1,3z(t))
y0(t) = y(t)(B2− A2,1x(t) − A2,2y(t) − A2,3z(t))
z0(t) = z(t)(B3− A3,1x(t) − A3,2y(t))
onde x(t) representa os coelhos, y(t) as lebres e z(t) as raposas. Nesta forma os coeficientes Bi e Ai,j
s˜ao positivos para i = 1 e i = 2, enquanto para i = 3 s˜ao negativos.
Note que o modelo acima engloba todos os modelos j´a apresentados. Na ausˆencia de raposas, temos um modelo de competi¸c˜ao entre lebres e coelhos. Na ausˆencia de lebres ou coelhos, temos o modelo presa-predador visto na se¸c˜ao anterior. Tanto as lebres como as raposas experimentam crescimento do tipo log´ıstico na ausˆencia das outras esp´ecies. Procure interpretar o papel de cada termo nas equa¸c˜oes. Veremos que a dinˆamica deste modelo pode ser bastante complexa.
2
Sua Tarefa
Vamos considerar os seguintes parˆametros para o modelo com duas presas e um predador.
B = 1 1 −1 , A = 0.0010 0.0010 0.0150 0.0015 0.0010 0.0010 −α −0.0005 0.0000 com 0.001 ≤ α ≤ 0.0055.
Com esta escolha de parˆametros temos que os coelhos ir˜ao levar vantagem sobre as lebres quando h´a poucas raposas. No entanto, as raposas se nutrem melhor de coelhos que de lebres ... O objetivo desse exerc´ıcio computacional ´e estudar esse modelo de competi¸c˜ao fazendo varia¸c˜oes nos parˆametros do modelo. Para tanto vocˆe ir´a usar o m´etodo de Runge-Kutta Fehlberg, descrito nas pr´oximas se¸c˜oes.
• Analise o comportamento do retrato de fase do modelo com rela¸c˜ao ao parˆametro α, escolhendo os valores 0.001, 0.002, 0.0033, 0.0036, 0.005 e 0.0055. Inicie com 500 coelhos, 500 lebres e 10 raposas. Nos dois primeiros casos, use tf = 100, nos dois seguintes tf = 500 e nos dois ´ultimos tf = 2000.
• Para cada caso vocˆe deve fazer gr´aficos do retrato de fase (ou seja um gr´afico cujos eixos s˜ao o n´umero de coelhos, lebres e raposas e cada ponto do gr´afico se refere a um instante de tempo da integra¸c˜ao). Para melhor visualiza¸c˜ao, plote tamb´em gr´aficos 2D (coelhos x lebres, coelhos x raposas, lebres x raposas). Fa¸ca tamb´em um gr´afico mostrando simultaneamente o tamanho de cada popula¸c˜ao ao longo do tempo.
• Teste a sensibilidade em rela¸c˜ao aos valores iniciais quando α = 0.005, executando o modelo at´e tf = 400 iniciando com 37 coelhos,75 lebres e 137 raposas. Imprima o n´umero de raposas, lebres e
coelhos no instante final. Repita o mesmo experimento, trocando apenas o n´umero inicial de lebres de 75 para 74. Compare os valores finais e a evolu¸c˜ao das trˆes popula¸c˜oes nos dois casos.
• Seu relat´orio deve conter primeiramente os testes solicitados ao final da descri¸c˜ao do m´etodo num´erico a ser empregado. Depois apresente as an´alises e gr´aficos solicitados, discutindo os re-sultados obtidos. Vocˆe pode tamb´em acrescentar as an´alises sobre o modelo de competi¸c˜ao e presa-predador.
• O exerc´ıcio deve ser feito em Python 3.x (o mesmo usado nos cursos de MAC, veja mais detalhes em https://panda.ime.usp.br/panda/python). O programa deve ser devidamente comentado e bem estruturado.
• O exerc´ıcio deve ser feito em duplas, sempre com um colega da mesma Engenharia, n˜ao necessari-amente da mesma turma.
• Apenas um aluno da dupla, o primeiro em ordem alfab´etica, deve entregar o exerc´ıcio, destacando no relat´orio e no programa o nome de ambos os alunos.
• A entrega deve conter o relat´orio (em .pdf), contendo a an´alise do problema estudado, e o c´odigo usado para as simula¸c˜oes computacionais (arquivos .py). A entrega deve ser feita em um arquivo compactado ´unico.
3
O M´
etodo de Runge-Kutta Fehlberg
Introdu¸
c˜
ao
Vamos aqui apresentar o m´etodo de Runge-Kutta Fehlberg, para solu¸c˜ao de (sistemas de) equa¸c˜oes diferenciais ordin´arias de primeira ordem, a partir dos valores iniciais das solu¸c˜oes. Em uma equa¸c˜ao diferencial (ou sistema de equa¸c˜oes) procura-se determinar uma fun¸c˜ao X(t) satisfazendo uma rela¸c˜ao do tipo:
X0(t) = F (t, X(t)) com X(t0) = X0 (1)
No caso geral X(t) ´e uma fun¸c˜ao definida em algum intervalo real, tomando valores em Rm (ou seja,
X(t) = (X1(t), X2(t), ..., Xm(t)), onde cada Xi(t) ´e uma fun¸c˜ao real). A fun¸c˜ao F (t, X(t)) ´e definida
em Rm+1 e assume valores em Rm. Caso F seja s´o uma fun¸c˜ao de X ∈ Rm (ou seja, n˜ao dependendo
explicitamente de t) temos um sistema autˆonomo.
O m´etodo que apresentaremos a seguir ´e uma varia¸c˜ao do m´etodo cl´assico de Runge-Kutta de quarta ordem, de forma a incorporar uma t´ecnica de controle do passo temporal visando atingir uma dada precis˜ao. Assim, em regi˜oes onde a solu¸c˜ao apresenta varia¸c˜oes r´apidas (com fortes gradientes), faz-se necess´ario o uso de um espa¸camento temporal menor, de forma a conseguir uma boa aproxima¸c˜ao para a solu¸c˜ao, enquanto que em regi˜oes em que a solu¸c˜ao varia suavemente, podem ser usados espa¸camentos maiores, levando a um m´etodo computacionalmente mais eficiente.
Preliminares
Apresentamos aqui brevemente o M´etodo de Euler, que em breve ser´a apresentado em sala de aula no curso. O descrevemos aqui, apenas para facilitar sua compreens˜ao de outros m´etodos.
Considerando o polinˆomio de Taylor da fun¸c˜ao x(t) obtemos: x(t + h) = x(t) + x0(t)h + x00(˜t)h2/2
onde ˜t se encontra entre t e t + h. Desta express˜ao temos: x(t + h) − x(t)
h = x
Se agora impusermos que x(t) ´e solu¸c˜ao da equa¸c˜ao diferencial (1) obtemos que: x(t + h) − x(t)
h = f (t, x(t)) + x
00(˜t)h/2
O m´etodo de Euler ir´a empregar a aproxima¸c˜ao x(t + h) − x(t)
h = f (t, x(t))
sendo o erro cometido proporcional a h. Partindo do instante inicial t0, onde conhecemos o valor inicial
x0da solu¸c˜ao, calcularemos sucessivamente as aproxima¸c˜oes
xi+1= xi+ hf (ti, xi)
onde ti = t0+ ih, e xi ´e a aproxima¸c˜ao de x(ti). Calculamos a solu¸c˜ao at´e um instante final tf em
n passos, onde nh = tf − t0. Por exemplo, na equa¸c˜ao 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¸c˜ao para o valor de x(1):
xn = (1 + h)xn−1= (1 + h)nx0= (1 + 1/n)n.
Sabemos que a solu¸c˜ao da equa¸c˜ao ´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¸c˜ao obtida pelo m´etodo de Euler para o valor da solu¸c˜ao 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¸c˜ao da equa¸c˜ao diferencial (1) no intervalo de tempo [t0, tf], subdividimos este intervalo em n partes de comprimento h = (tf− t0)/n e aproximamos
a solu¸c˜ao 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.
O m´etodo de Euler ´e bastante simples e f´acil de implementar, por´em apresenta uma convergˆencia lenta, com o erro da ordem de h. H´a m´etodos para solu¸c˜ao de equa¸c˜oes diferenciais que convergem muito mais rapidamente. Um m´etodo cl´assico, muito utilizado, ´e o m´etodo de Runge-Kutta de quarta ordem (com erro da ordem de h4). Neste m´etodo cada passo no tempo ´e calculado da seguinte forma
(com a mesma nota¸c˜ao usada no m´etodo de Euler), em 4 est´agios:
xi+1 = xi+ (k1+ 2k2+ 2k3+ k4)/6, onde
k1 = hf (ti, xi)
k2 = hf (ti+ 0.5h, xi+ 0.5k1)
k3 = hf (ti+ 0.5h, xi+ 0.5k2)
k4 = hf (ti+ h, xi+ k3)
Veja que cada passo no tempo requer 4 avalia¸c˜oes da fun¸c˜ao f , uma em cada est´agio. Vocˆe encontra no livro texto do curso (e ver´a tamb´em em sala de aula) uma descri¸c˜ao mais detalhada sobre m´etodos de Runge-Kutta, incluindo uma dedu¸c˜ao de um m´etodo de ordem 2. A deriva¸c˜ao do m´etodo acima ´e obtida de maneira an´aloga, sendo por´em muito mais trabalhosa (e normalmente omitida nos livros did´aticos).
Uma t´
ecnica de controle do passo h
Tanto o m´etodo de Euler como o m´etodo cl´assico de Runge-Kutta fazem uso de um espa¸camento h, pelo qual se incrementa o valor de t a cada passo, sendo que a precis˜ao atingida ir´a depender deste valor de h. Iremos agora descrever como variar o valor de h durante uma integra¸c˜ao, de forma a obter-se uma dada precis˜ao de forma eficiente. A t´ecnica que veremos, baseia-se no uso de dois m´etodos de passo simples com ordens de convergˆencia p e p + 1.
Consideremos dois m´etodos de ordem p e p + 1 que a partir do valor de xi gerem a aproxima¸c˜ao para
x(ti+1) respectivamente como:
xi+1= xi+ hΦ(ti, xi, h) e
˜
Se x(t) ´e a solu¸c˜ao da equa¸c˜ao diferencial, o erro local de truncamento dos m´etodos ´e dado por: τi+1(h) = x(ti+1) − x(ti) h − Φ(ti, x(ti), h) = O(h p) e ˜ τi+1(h) = x(ti+1) − x(ti) h − ˜Φ(ti, x(ti), h) = O(h p+1) .
Assumindo que a aproxima¸c˜ao xi no instante ti seja praticamente igual `a solu¸c˜ao x(ti) obtemos
τi+1(h) = x(ti+1) − xi− hΦ(ti, xi, h) h = x(ti+1) − xi+1 h e analogamente que ˜ τi+1(h) = x(ti+1) − ˜xi+1 h . Assim, τi+1(h) = x(ti+1) − ˜xi+1 h + ˜ xi+1− xi+1 h = ˜τi+1(h) + ˜ xi+1− xi+1 h .
Desprezando o erro local de truncamento ˜τi+1(h) por ser de ordem mais alta, obtemos a aproxima¸c˜ao
para o erro local de truncamento para o m´etodo de ordem p dada por τi+1(h) ≈
˜
xi+1− xi+1
h .
Atrav´es desta express˜ao podemos estimar o erro local de truncamento e verificar se este se encontra dentro da ordem de precis˜ao desejada. Al´em disso podemos verificar se o espa¸camento h pode ser aumentado ou necessita ser reduzido. Para tanto usamos que τi+1(h) ≈ Khp e estimamos o erro local de truncamento
que ter´ıamos se us´assemos um novo espa¸camento ˜h = αh: τi+1(αh) ≈ K(αh)p ≈ αpτi+1(h) ≈ αp
˜
xi+1− xi+1
h .
Se desejamos que a norma do erro de truncamento ||τi+1(αh)|| seja menor que devemos ter
α ≤
h
c||˜xi+1− xi+1||
1/p
onde c > 1 ´e um fator de seguran¸ca e empregamos a norma do m´aximo.
O M´
etodo RKF45
Agora estamos em condi¸c˜ao de apresentar o m´etodo de Runge-Kutta Fehlberg, que combina m´etodos de quarta e quinta ordem para o controle do passo. M´etodos expl´ıcitos de Runge-Kutta de quinta ordem requerem no m´ınimo 6 est´agios, enquanto que se consegue m´etodos de quarta ordem com 4 est´agios (como ´e o caso do m´etodo cl´assico visto em se¸c˜ao anterior). Assim, para aplicarmos os m´etodos de quarta e quinta ordem para gerarmos as novas aproxima¸c˜oes a partir de xi teremos potencialmente que
avaliar at´e 10 est´agios, a menos que os m´etodos compartilhem alguns destes. Este ´e exatamente o caso do m´etodo de Fehlberg, em que o c´alculo dos dois m´etodos ir´a requerer apenas 6 est´agios, uma vez que o m´etodo de quarta ordem a ser utilizado compartilha dos mesmos est´agios requeridos no m´etodo de sexta ordem. Descrevemos abaixo os seis est´agios requeridos pelos m´etodos:
k1 = hF (ti, xi) k2 = hF (ti+ h/4, xi+ 1 4 k1) k3 = hF (ti+ 3h/8, xi+ 3 32 k1+ 9 32 k2) k4 = hF (ti+ 12h/13, xi+ 1932 2197 k1− 7200 2197 k2+ 7296 2197 k3) k5 = hF (ti+ h, xi+ 439 216 k1− 8 k2+ 3680 513 k3− 845 4104 k4) k6 = hF (ti+ h/2, xi− 8 27 k1+ 2 k2− 3544 2565 k3+ 1859 4104 k4− 11 40 k5)
O m´etodo de quarta ordem ´e dado por xi+1 = xi+ 25 216 k1+ 1408 2565 k3+ 2197 4104 k4− 1 5 k5 enquanto que o de ordem 5 ´e obtido como
˜ xi+1= xi+ 16 135 k1+ 6656 12825 k3+ 28561 56430 k4− 9 50 k5+ 2 55 k6 .
O m´etodo ent˜ao funciona da seguinte forma: a partir do valor inicial x0e de um h inicial, calcula-se as
aproxima¸c˜oes xi+1 e ˜xi+1 dadas respectivamente pelos esquemas de quarta e quinta ordem. Em fun¸c˜ao
destes dois valores e de h estima-se o erro local de truncamento τi+1(h) como descrito na se¸c˜ao anterior.
Caso este valor seja menor que o valor de xi+1´e aceito como nova aproxima¸c˜ao no instante ti+1 = ti+ h
e atualiza-se o valor de h para αh (ou seja, multiplica-se h por α), onde α ´e calculado como descrito ao final da se¸c˜ao anterior, empregando um fator de seguran¸ca c = 2. No caso de τi+1(h) ser maior que
o valor de xi+1 ´e rejeitado, com h sendo atualizado da mesma forma, ap´os o que se refaz os c´alculos
das aproxima¸c˜oes xi+1 e ˜xi+1. Uma vez que xi+1 tenha sido aceito procede-se ao c´alculo da solu¸c˜ao no
pr´oximo passo, usando-se o mesmo procedimento. A integra¸c˜ao termina ao atingir-se o instante final desejado. Para garantir que se chegue exatamente no instante final tf - sem ultrapass´a-lo - pode-se
limitar o valor de h a cada passo pelo tanto que falta para tf, fazendo com que h seja no m´aximo igual a
tf − ti. Al´em disso, ´e conveniente que h n˜ao seja escolhido nem grande, nem pequeno demais. Ou seja,
adicionalmente impomos que hmin≤ h ≤ hmax, onde hmin e hmax s˜ao dois parˆametros a ser escolhidos
pelo usu´ario (dependem das escalas temporais que temos). No seu programa utilize hmin = 0.001 e
hmax= 1.0.
Implementa¸
c˜
ao e alguns testes
Vocˆe deve implementar o m´etodo de Runge-Kutta Fehlberg (RKF45) descrito na se¸c˜ao anterior, empre-gando a t´ecnica de controle do passo. Sua implementa¸c˜ao deve contemplar o fato de que a fun¸c˜ao F (t, X) descrevendo a equa¸c˜ao diferencial possa assumir valores em Rm, onde m ser´a uma vari´avel. Os testes e
o problema que vocˆe resolver´a depois na aplica¸c˜ao do m´etodo envolver˜ao diferentes valores da dimens˜ao n. Uma forma de vocˆe escrever a fun¸c˜ao de maneira razoavelmente geral ´e passar como argumentos o valor de m (que ser´a usado no dimensionamento do vetor X) e uma vari´avel caso. Dependendo do valor de caso, calcule ent˜ao a fun¸c˜ao espec´ıfica requerida em cada teste e / ou aplica¸c˜ao.
Teste 1 - considere a equa¸c˜ao diferencial com F : R2 → R dada por F (t, x) = 1 + (x − t)2. Integre-a
a partir do valor inicial x(1.05) = −18.95 at´e o tempo final tf = 3 pelo m´etodo RKF45 com = 10−5.
Use para iniciar h = 0.1. A cada passo imprima o valor de h empregado e o valor da solu¸c˜ao. Imprima tamb´em o erro em rela¸c˜ao `a solu¸c˜ao exata desta equa¸c˜ao dada por x(t) = t + 1/(1 − t).
Teste 2 - considere a equa¸c˜ao diferencial autˆonoma com F (t, X) = AX, com X ∈ R4, onde
A = −2 −1 −1 −2 1 −2 2 −1 −1 −2 −2 −1 2 −1 1 −2
Integre-a a partir de X(0) = (1, 1, 1, −1) at´e tf = 2, usando h = 0.1 inicialmente e = 10−5. A cada
passo imprima o valor de h, ti e ||Xi− ¯X(ti)||, com a norma do m´aximo. A solu¸c˜ao exata desta equa¸c˜ao
´ e ¯ X(t) = e−tsin t + e−3tcos 3t e−tcos t + e−3tsin 3t
−e−tsin t + e−3tcos 3t
−e−tcos t + e−3tsin 3t
Teste 3 - Considere o sistema autˆonomo com F (t, X) = AX, com X ∈ Rm, onde A ´e uma matriz
tridiagonal m × m, tal que Ai,i = −2, i = 1, .., m, Ai,i+1 = Ai+1,i = 1, i = 1, .., m − 1 e Ai,j = 0
nas posi¸c˜oes restantes. Este exemplo permite que vocˆe teste seu c´odigo para valores diversos de m. Use como condi¸c˜ao inicial o vetor X(0) com componentes X(0)i = sin(πyi) + sin(mπyi), onde yi =
i/(m + 1), para i = 1, ..., m. A solu¸c˜ao exata deste sistema ´e dada pelo vetor X(t) cujas componentes s˜ao: X(t)i = e−λ1tsin(πyi) + e−λ2tsin(mπyi), i = 1, ..., m, com λ1 = 2(1 − cos(π/(m + 1))) e λ2 =
2(1 − cos(mπ/(m + 1))). Vocˆe deve executar este teste com m = 7, usando h = 0.1 inicialmente e = 10−5. A cada passo imprima o valor de h, ti e ||Xi− X(ti)||, comparando sua solu¸c˜ao com a solu¸c˜ao