Um biólogo efetua um experimento de medida da taxa de reprodução assexuada de um tipo específico de bactéria em diferentes temperaturas. A taxa de reprodução diária (multiplicador) das bactérias a uma temperatura " T " é igual a 1+(\mathrm{T}-40) / 100. O biólogo inicia o primeiro dia de testes com 1000 bactérias e uma temperatura \mathrm{T}=45. No início de cada dia múltiplo de 2 , a temperatura aumenta em 0,5^{\circ} \mathrm{C}. Escreva um script que calcule a quantidade total de bactérias existentes no final do experimento, sendo que o experimento inicia com 1000 bactérias.

Passo 1

O que o enunciado pede e o que nos dá:
  • Pede um script que calcule a quantidade total de bactérias no final do experimento, começando com 1000 bactérias.
  • Informações fornecidas:
    • População inicial: N_0 = 1000.
    • Temperatura inicial no dia 1: T_1 = 45^\circ\mathrm{C}.
    • A cada dia múltiplo de 2 (ou seja, nos inícios dos dias 2,4,6,\dots) a temperatura aumenta em 0,5^\circ\mathrm{C}.
    • A taxa de reprodução diária (multiplicador) a uma temperatura T é \;1 + \dfrac{T-40}{100}\;.
  • O script deve aceitar um número de dias n e retornar a população após n dias.

Passo 2

Determinar a temperatura que vale em cada dia d.
  • A temperatura inicial é T_1=45.
  • A cada dia d tal que d é par, a temperatura aumenta no início desse dia em 0,5.
  • O número de aumentos ocorridos até (e incluindo) o início do dia d é o número de inteiros pares entre 1 e d, que é \displaystyle\left\lfloor\frac{d}{2}\right\rfloor.
  • Logo, a temperatura usada no dia d é
T(d)=45 + 0,5\left\lfloor\frac{d}{2}\right\rfloor.
Verificação rápida: para d=1 temos \lfloor 1/2\rfloor=0\Rightarrow T(1)=45. Para d=2 \lfloor2/2\rfloor=1\Rightarrow T(2)=45{,}5. OK.

Passo 3

Expressar o multiplicador diário r(d) em função de d.
A fórmula dada é r=1+\dfrac{T-40}{100}. Substituindo T(d) obtemos
r(d)=1 + \frac{45 + 0{,}5\left\lfloor\frac{d}{2}\right\rfloor - 40}{100} =1 + \frac{5 + 0{,}5\left\lfloor\frac{d}{2}\right\rfloor}{100}.
Simplificando:
r(d)=1{,}05 + 0{,}005\left\lfloor\frac{d}{2}\right\rfloor.

Passo 4

Expressar a população após n dias e estratégia de cálculo.
  • Após n dias a população é
N(n)=N_0\prod_{d=1}^{n} r(d) =1000\prod_{d=1}^{n}\left(1{,}05 + 0{,}005\left\lfloor\frac{d}{2}\right\rfloor\right).
  • Na prática, o jeito mais simples e seguro numericamente é calcular esse produto iterativamente em um loop: começar com N\gets N_0 e para cada dia d=1 até n atualizar N\gets N\cdot r(d).
  • No final pode-se devolver N como número real, ou arredondar para inteiro se quiser o número de bactérias inteiro (por exemplo, \mathrm{round}(N)).

Passo 5

Exemplo numérico curto (para entender o passo a passo), com n=5.
Calcular manualmente dia a dia:
  • Dia 1: \lfloor 1/2\rfloor=0\Rightarrow r(1)=1{,}05. N_1=1000\cdot1{,}05=1050{,}0.
  • Dia 2: \lfloor 2/2\rfloor=1\Rightarrow r(2)=1{,}055. N_2=1050{,}0\cdot1{,}055=1107{,}75.
  • Dia 3: \lfloor 3/2\rfloor=1\Rightarrow r(3)=1{,}055. N_3=1107{,}75\cdot1{,}055=1168{,}67625.
  • Dia 4: \lfloor 4/2\rfloor=2\Rightarrow r(4)=1{,}06. N_4=1168{,}67625\cdot1{,}06=1238{,}796825.
  • Dia 5: \lfloor 5/2\rfloor=2\Rightarrow r(5)=1{,}06. N_5=1238{,}796825\cdot1{,}06\approx1313{,}1246345.
Isso confirma que o procedimento iterativo funciona e mostra como a temperatura afetou os multiplicadores.

Passo 6

Observações práticas e cuidado com precisão:
  • Para n grande, o valor cresce multiplicativamente; usar float de dupla precisão (o padrão em Python) é suficiente para muitos casos, mas para n muito grande pode perder precisão.
  • Se quiser o número de bactérias inteiro no fim, arredonde apenas no final com \mathrm{round} ou \lfloor\cdot\rceil.
  • O algoritmo é O( n) em tempo e muito simples de implementar.

Passo 7

Script em Python que implementa o cálculo. O script recebe o número de dias n e retorna a população final (valor real). Pode-se arredondar conforme desejado.

Resposta

def final_bacterias(n, N0=1000):
    """
    Calcula a quantidade de bactérias após n dias.
    n: número inteiro de dias (n >= 0)
    N0: população inicial (padrão 1000)
    Retorna: população final como float.
    """
    T0 = 45.0
    N = float(N0)
    for d in range(1, n + 1):
        # número de aumentos de temperatura até o início do dia d
        aumentos = d // 2  # isto é floor(d/2) para inteiros
        T = T0 + 0.5 * aumentos
        r = 1.0 + (T - 40.0) / 100.0
        N *= r
    return N

# Exemplo de uso:
# print(final_bacterias(5))  # retorna aproximadamente 1313.1246345

Exercícios relacionados