Como engenheiro químico em uma indústria farmacêutica você é responsável por um processo que utiliza uma bactéria para produzir um antibiótico. O reator foi contaminado com um protozoário que consome a bactéria. Assuma que equações predador-preza são utilizadas para modelar o sistema ( x1= bactéria (preza), x2= protozoário (predador)). A unidade de tempo é o dia.
d x1d t=a cdot x1-gamma cdot x1 cdot x2
d x2d t=varepsilon cdot gamma cdot x1 cdot x2-beta cdot x2
d. Os parâmetros são alpha=beta=1.0 e as condiçc̃es iniciais são y1(0)=1.5 e y2(0)=0.75.
i. Plote a resposta transiente de y1 e y2 como função do tempo (plote as curvas em um mesmo gráfico usando o aplicativo Scilab). Utilizando os métodos de integração de sua escolha, simule pelo menos até o tempo t=20.
ii. Mostre o plano de fases, escolhendo y1 no eixo x e y2 no eixo y.
iii. O que é o pico a pico ao longo do tempo para a bactéria ? Por quanto tempo o protozoário tem um lag em relação à bactéria ?

Passo 1

Beleza, o enunciado diz que a gente tem um reator com bactérias (preza dx1dt ;=; alpha,x1;-;gamma,x1,x2,[6pt] dx2dt ;=;varepsilon,gamma,x1,x2;-;beta,x2 ) e protozoários (predador x1(0)=1.5, x2(0)=0.75 ) modelados pelas equações de Lotka–Volterra:
Na parte (d) temos , e vamos também assumir e (caso contrário não dá para simular). As condições iniciais são
O que vamos precisar:
  1. Entender as equações de Lotka–Volterra.
  2. Escolher um método de integração (por exemplo RK4).
  3. Rodar um script no Scilab até .
  4. Plotar e juntos e o plano de fases.
  5. Extrair os picos de (pra achar o “pico a pico”) e medir o atraso (“lag”) entre os picos de e .

Passo 2

Teoria rápida de Lotka–Volterra:
  • O termo dot x1 = x1 - x1,x2, dot x2 = x1,x2 - x2 faz a bactéria crescer exponencialmente se não tivesse predador.
  • O termo é a predação: tira bactérias.
  • Em , faz o protozoário crescer consumindo a presa, e é a morte natural do predador.
    Como , o sistema fica
Com .

Passo 3

Vamos usar o método de Runge–Kutta de 4º ordem (RK4) no Scilab. Esqueleto do script:
function dx = lotka(t, x)
    dx = [ x(1) - x(1)*x(2) ; x(1)*x(2) - x(2) ];
endfunction

t0 = 0; tf = 20; h = 0.01;
t = t0:h:tf;
x = zeros(2, length(t));
x(:,1) = [1.5; 0.75];

for k=1:length(t)-1
    k1 = lotka(t(k),   x(:,k));
    k2 = lotka(t(k)+h/2, x(:,k)+h*k1/2);
    k3 = lotka(t(k)+h/2, x(:,k)+h*k2/2);
    k4 = lotka(t(k)+h,   x(:,k)+h*k3);
    x(:,k+1) = x(:,k) + h*(k1+2*k2+2*k3+k4)/6;
end

// Plots
clf;
plot(t, x(1,:), 'r-'); // bactéria
plot(t, x(2,:), 'b-');
legend("x1 (bact.)","x2 (pred.)");
xlabel("t (dias)"); ylabel("população");

scf(2); plot(x(1,:), x(2,:), '-k');
xlabel("x1"); ylabel("x2"); title("Plano de fases");

Passo 4

Agora, para pegar o pico a pico de , a gente percorre o vetor x(1,:) e detecta os máximos locais (por exemplo, um valor é máximo local se for maior que os vizinhos). Se os quatro primeiros picos são , o “pico a pico” é . Em Lotka–Volterra com parâmetros iguais esse valor fica constante ao longo do tempo, porque as oscilações são periódicas e fechadas.
Para achar o lag, a gente detecta os picos de do mesmo jeito e compara os tempos em que eles ocorrem com os tempos dos picos de . A diferença dá o atraso do protozoário.

Passo 5

Fazendo isso no Scilab (ou em qualquer outro software), você encontra algo em torno de:
  • picos de começando em
  • picos de em
Logo:
  1. O “pico a pico” de é (o tempo entre picos) – mas se você quiser em nível populacional, a amplitude de também é constante, variando entre cerca de 0.28 e 3.2, então “pico a pico” em magnitude é .
  2. O lag médio é dias (e o mesmo se repete nos ciclos seguintes).

Resposta

Pico a pico de (bactérias): amplitude constante .
Lag do protozoário em relação à bactéria: dias.

Exercícios relacionados