Considerando que a expressão que modela o crescimento da população brasileira pode ser escrita como
onde t é dado em anos. Plote um gráfico que mostre o crescimento populacional de 1900 a 2100 (Dica: a função exponencial no Octave é
. Para executar uma divisão elemento a elemento, dividindo o mesmo numerador por um vetor de denominadores, use o comando ./).
Passo 1
O enunciado nos dá a função de crescimento populacional
onde
é o ano. O que se pede: “Plote um gráfico que mostre o crescimento populacional de 1900 a 2100”. Informações relevantes dadas pelo enunciado:
- A função explícita
. - O intervalo temporal para o gráfico: de
até . - Dica de Octave: a função exponencial é
exp()e para divisão elemento a elemento use./.
Passo 2
Entendendo a função (mini-aula rápida e prática).
A expressão é uma função logística do tipo geral
A expressão é uma função logística do tipo geral
onde:
-
é a capacidade de suporte (o valor-limite superior quando ); -
é a taxa de crescimento (controla a inclinação da curva); -
é o tempo do ponto médio / inflexão (quando a curva muda de côncava para convexa).
No nosso caso: -
, -
, -
.
Propriedades úteis ao visualizar o gráfico: quandoé muito pequeno, fica próximo de 0; quando é muito grande, tende a . A curva tem formato em “S”.
Passo 3
Escolhendo o vetor de anos
(resolução do gráfico).
- Podemos usar um passo por ano:
1900:1:2100(201 pontos). - Para um traço mais suave, usar passo menor, por exemplo
1900:0.1:2100(4001 pontos). - Alternativa:
linspace(1900,2100,1001)para um número fixo de pontos.
Explicação técnica: em Octave o operadorstart:step:endcria um vetor; usar um passo pequeno deixa a curva visualmente suave.
Passo 4
Como calcular
no Octave (vetorização e operações elemento a elemento).
- Em Octave,
exp(x)calculaelemento a elemento se xfor vetor. - Se
tfor vetor, para multiplicar ou dividir cada elemento pelo mesmo escalar ou para aplicar operações elemento a elemento, usa-se.*,./e.^quando necessário. - No nosso cálculo é seguro e recomendado usar:
P = 157273000 ./ (1 + exp(-0.0313 .* (t - 1913.25)));
Isto corresponde exatamente a
Observação: o uso de e cada elemento do denominador.
./ garante que a divisão seja feita elemento a elemento entre o escalar
Passo 5
Comandos básicos para plotar e deixar o gráfico apresentável.
plot(t,P,'b-','LineWidth',2): plota a curva em azul com maior espessura.xlabel(...)eylabel(...): rotulam os eixos.title(...): título do gráfico.grid on: ativa grade para facilitar leitura.xlim([1900 2100]): força os limites do eixopara o intervalo pedido. ylim([0 1.05*K]): opcional, deixa espaço acima da capacidade. hold on/hold off: permitem adicionar linhas extras (por exemplo a reta horizontal em). legend(...): cria legenda explicando curvas.
Passo 6
Um roteiro prático (passo-a-passo) para executar no Octave:
- Definir o vetor de anos
t(por exemplo1900:0.1:2100). - Calcular
Pcom a fórmula usandoexpe./e.*. - Fazer o
plote embelezar com rótulos, título, grade, limites e legenda. - (Opcional) salvar figura com
print -dpng 'populacao.png'ou similar.
Dica prática: salve o código num arquivoplot_populacao.me execute no Octave complot_populacao.
Passo 7
Exemplo de código comentado (explicação das linhas). Este é o conteúdo que será executado no Octave:
- Cria vetor de anos em passo
0.1. - Calcula
usando vetorização. - Plota a curva e adiciona a capacidade
como linha tracejada vermelha. - Ajusta rótulos, título, grade e legenda.
Passo 8
Conselhos finais e interpretação rápida do que se verá no gráfico.
- A curva deverá mostrar crescimento rápido em torno de épocas próximas a
e depois se aproximar de . - Se quiser ver pontos históricos (por exemplo marcar um ano real), usar
plot(ano,valor,'ro')após calcularPpara esseano. - Se o Octave reclamar de tamanhos, reduzir a resolução (usar passo
1).
Resposta
% plot_populacao.m -- plota P(t) de 1900 a 2100
t = 1900:0.1:2100;
K = 157273000;
r = 0.0313;
t0 = 1913.25;
P = K ./ (1 + exp(-r .* (t - t0)));
figure;
plot(t, P, 'b-', 'LineWidth', 2);
hold on;
plot([1900 2100], [K K], 'r--', 'LineWidth', 1); % linha de K
hold off;
xlabel('Ano');
ylabel('População');
title('Crescimento populacional do Brasil (1900–2100)');
legend('P(t)','Capacidade de suporte (K)', 'Location', 'southeast');
grid on;
xlim([1900 2100]);
ylim([0 1.05*K]);