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
em que
é a população inicial do modelo,
é a taxa de natalidade, e
é a taxa de imigração. Assumindo que
e
, 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
.
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
Passo 1
Beleza, aqui a ideia é achar a taxa de natalidade η que faz
, 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:
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
Teoria rápida do método da bissecção: se
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ãoe 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
com erro menor que
.
Resposta
A taxa de natalidade aproximada é