Sistemas lineares: os Carcarás e os Sapos
Uma situação que acontece na natureza é que alguns seres vivos são predadores de outros. Por exemplo: o carcará, uma ave de rapina sul-americana parecida com um falcão, se alimenta de sapos, e, por isso, dizemos que o carcará é um predador do sapo. Nessa relação, o carcará é o predador e o sapo é a presa. Nosso objetivo, neste exercício, é encontrar como a quantidade de carcarás e de sapos varia com o tempo.
Na nossa simulação, o tempo é medido em meses (veja que \(t\) será sempre um número inteiro!). Vamos usar a variável \(c\) para representar o número de carcarás na população, e \(s\) para representar o número de sapos. Então, \(c_t\) é o número de carcarás no tempo \(t\), e \(s_t\) é o número de sapos no tempo \(t\). Como cada carcará come muitos sapos, vamos convencionar que \(c\) está em unidades e \(s\) está em milhares.
Vamos assumir alguns comportamentos
- A população de carcarás naturalmente cai em 20% a cada mês
- Para cada cinco mil sapos existentes naquele mês, um novo carcará nasce
- A população de sapos naturalmente sobe em 10% porque eles se reproduzem
- A cada mês, cada carcará consegue comer 100 sapos
Isso significa que podemos escrever equações para calcular o número de carcarás e de sapos a cada mês, tomando por base a quantidade deles no mês anterior:
Sistemas dinâmicos
Assim como na simulação dos confetes digitais, temos variáveis ligadas à iteração atual, que são recombinadas para gerar a próxima iteração. As variáveis \(c\) e \(s\) determinam o estado do sistema.
Veja que o sistema de equações pode ser re-escrito como:
Isso acontece porque, ao realizar a multiplicação matricial no membro direito da equação, obtemos:
Essa igualdade é verdadeira se os elementos dos vetores são todos iguais, isto é:
Manualmente, assuma \(c_t=10\) e \(s_t=20\). Use primeiro a formulação em sistema, e, depois, a formulação matricial, para encontrar \(c_{t+1}\) e \(s_{t+1}\)
Em ambos os casos: \(c_{t+1} = 0.8 \times 10 + 0.2 \times 20 = 8+4=12\) e \(s_{t+1} = -0.1 \times 10 + 1.1 \times 20 = -1 + 22 = 21\).
Implementação computacional
Em Python, podemos definir matrizes usando Numpy, e usar o operador @ para realizar a multiplicação matricial:
import numpy as np
A = np.array([ [0.8, 0.2], [-0.1, 1.1] ])
x = np.array( [[10], [20]])
x_novo = A @ x # Quanto vale x_novo? Tivemos o mesmo resultado que a multiplicação manual?
Veja que agora podemos calcular a quantidade de carcarás e sapos em nossa população ao longo de várias iterações:
import numpy as np
n_iteracoes = 100
A = np.array([ [0.8, 0.2], [-0.1, 1.1] ])
x = np.array( [[10], [20]])
for i in range(n_iteracoes):
x_novo = A @ x
x = x_novo
Exercício: Calcule o número de carcarás e de sapos na região após 10 anos.
Exemplo: uma pedra que cai
Podemos usar o mesmo processo para modelar uma pedra em movimento uniforme. Usando uma simulação em intervalos de \(\Delta t\), temos que:
E, na forma matricial, temos:
Veja que \(v_t\) não muda (por que o movimento é uniforme!), mas ele precisa ser usado como uma variável para que possa influenciar no cálculo de \(x_{t+1}\).
Modifique o sistema de equações e sua formulação matricial para adicionar aceleração constante ao sistema
Nesse caso, teríamos:
e, portanto:
Adicione uma força de resistência do ar a esse sistema. Lembre-se que a resistência do ar gera uma força no sentido oposto à velocidade e com módulo \(\beta |v|\), onde \(\beta \in [0,1]\).
Vamos precisar definir a massa da pedra (\(m\)) e o coeficiente \(\beta\). Após isso, usamos a Segunda Lei de Newton (\(F=ma\)) e verificamos que a aceleração decorrente da resistência do ar vale \(\frac{-\beta}{m} v\). Portanto, ficamos com o sistema:
Na forma matricial, isso fica:
Exercício: encontrar a velocidade terminal
Quando um objeto cai em um ambiente com resistência do ar, ele é puxado pela gravidade. Isso faz com que a velocidade de queda aumente. Porém, esse aumento de velocidade faz com que a força de arraste também aumente. Quando as acelerações devidas à gravidade (\(g\)) e ao arraste são iguais, o objeto atinge sua velocidade terminal.
(a) Esboce a situação discutida mostrando as forças da gravidade e de arraste sobre o objeto.
(b) Mostre que a velocidade terminal é \(v = \frac{m g}{\beta}\).
(c) Calcule a velocidade terminal assumindo \(\beta=0.7\), \(m=100kg\) e \(a=10m/s^2\).
(d) Use a formulação matricial e uma simulação computacional para confirmar o resultado encontrado em (c).
(e) Faça um gráfico da velocidade de queda do objeto como uma função do tempo, assumindo velocidade inicial nula.