Sob certas condições, o crescimento de uma população pode ser modelado em função do tempo (em anos) através da expressão
N(t)=N0 e^eta t+Ieta(e^eta t-1)
em que N0 é a população inicial do modelo, eta é a taxa de natalidade, e I é a taxa de imigração. Assumindo que N0=1000000, I=435000 e N(1)=1564000, faça o que se pede.
Utilize o método da bissecção programado em Python para determinar uma aproximação da taxa de natalidade deste primeiro ano com precisão de 10^-4.

Passo 1

Beleza, aqui a ideia é achar a taxa de natalidade η que faz
N(t)=N0e^eta t+Ietal(e^eta t-1r), , sabendo que
com e .
Conteúdo: vamos resolver uma equação não-linear em η usando o método da bissecção (root-finding).
O que precisamos:
  • definir a função ,
  • escolher um intervalo [a,b] onde f muda de sinal,
  • implementar o loop de bissecção até a largura do intervalo ser .

Passo 2

Definindo a função
f(eta)=N0 e^etacdot1+Ietal(e^etacdot1-1r)-1,564,000
Teoria rápida do método da bissecção: se c=a+b2, e têm sinais opostos, existe raiz em (a,b). A cada passo escolhemos
avaliamos e substituímos a ou b por c, dependendo de onde o sinal muda, reduzindo pela metade o tamanho do intervalo até que .

Passo 3

Vamos achar um bracket inicial. Note que:
  • em temos, aproximando o limite, , então
    (negativo).
  • em ,
    ,
    logo .
    Então e podemos usar [0,1].
Pseudocódigo em Python (estilo reserva de amigo):
import math

N0 = 1e6
I  = 435e3
N1 = 1.564e6
tol = 1e-4

def f(eta):
    return N0*math.exp(eta) + (I/eta)*(math.exp(eta)-1) - N1

a, b = 0.0, 1.0
while b - a > tol:
    c = (a + b) / 2
    if f(a)*f(c) <= 0:
        b = c
    else:
        a = c

eta_aproximado = (a + b) / 2
Aqui a cada iteração o intervalo [a,b] encolhe pela metade; quando , paramos e pegamos .

Passo 4

Se você rodar esse código, em poucas dezenas de iterações vai encontrar
eta approx 0,1011
com erro menor que .

Resposta

A taxa de natalidade aproximada é
boxedeta approx 0,1011(precisão 10^-4) ã

Exercícios relacionados