Modelos Continuos · Tema 18

Modelos poblacionales

Nacimientos, muertes y capacidad de carga: la logística con nombres demográficos.

01 · Punto de partida

Contar individuos en flujo continuo

Nacen b·P por minuto y mueren d·P: el neto r = b − d decide si crece o se apaga. Y el ambiente pone techo K: sin comida ni espacio, la per cápita se achica hasta anularse. La ecuación es dP/dt = (b − d)·P·(1 − P/K): logística con pasaporte demográfico.

Modelar poblaciones así sirve para bacterias, peces, bosques y también para usuarios, clientes o contagios con capacidad.

  • ¿Cuánto nacen (b) y cuánto mueren (d) por individuo?
  • ¿El neto r = b − d es positivo o negativo?
  • ¿Cuál es la capacidad K del ambiente?
  • ¿Cuántos hay hoy (P₀) y hacia dónde van?

02 · Definición

¿Qué es un modelo poblacional continuo?

Balance demográfico con tres actores:

+

Nacimientos b·P

Entradas proporcionales: cada individuo aporta b hijos por tiempo. Ejemplo: b = 0,4/min.

−

Muertes d·P

Salidas proporcionales: cada individuo muere con tasa d. Ejemplo: d = 0,1/min.

K

Capacidad K

Techo del ambiente: comida, espacio, mercado. Frena la per cápita hasta cero en K.

Si b > d hay S hacia K; si b < d hay decaimiento hacia 0; si b = d la población reposa donde esté.

El signo de r = b − d decide la historia (K = 100, P₀ = 10).
Tasasr netoDestino
b = 0,4, d = 0,1+0,3 (crece)S hacia 100.
b = 0,1, d = 0,4−0,3 (mengua)Decae hacia 0.
b = 0,2, d = 0,20 (reposa)Horizontal en 10.
b = 0,5, d = 0,1+0,4 (fuerte)S rápida hacia 100.

03 · Anatomía

Neto, techo y cosecha

La demografía continua se lee en tres números:

Neto r = b − d
Crecimiento intrínseco: manda despegue y velocidad. Sin techo es exponencial pura.
Techo K
Dónde muere la per cápita: equilibrios en 0 (repele si r > 0) y K (atrae).
Cosecha h·P
Extracción (pesca, tala): dP/dt = r·P·(1 − P/K) − h·P. Si h > r, colapsa a 0.
Umbral de extinción
Con r < 0, cualquier P₀ decae: la población no se sostiene sola.

Sin techo (corto plazo)

Exponencial con r = b − d

Válido mientras P ≪ K: colonias jóvenes, invasiones, modas. Simple y peligroso fuera de plazo.

Con techo (largo plazo)

Logística demográfica

Despega con r y aterriza en K: pesquerías, bosques, usuarios con mercado finito.

04 · Poblaciones en el curso

La misma S con cinco censos

Cada conteo con nacimientos y techo es este modelo:

b − d = r→Freno (1 − P/K)→S en K
  1. 1
    Cultivo.

    b − d = r con K del plato: S de laboratorio.

  2. 2
    Pesquería.

    r natural menos cosecha h: equilibrio en K·(1 − h/r).

  3. 3
    Bosque.

    Reforestación con capacidad del suelo: S lenta.

  4. 4
    Usuarios.

    Altas menos bajas con mercado K: adopción que satura.

  5. 5
    Epidemia (Tema 20).

    SIR: la «capacidad» de susceptibles se agota contagiando.

05 · Representación en Python

b y d separados, r explícito

En Python conviene recibir b y d por separado y calcular r adentro: el código documenta la demografía en vez de esconderla en un r mágico.

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Subí d sobre b y observá el colapso.

def tasa_poblacional(p, b=0.4, d=0.1, k=100.0):
    r = b - d
    return r * p * (1 - p / k)


for p in [10, 50, 95]:
    print(p, round(tasa_poblacional(p), 2))

10,5 · 7,5 · 2,38: nace fuerte, culmina en K/2 y muere en el techo.

Exacta demográfica

Con r = b − d, la S cerrada usa el neto:

import math


def poblacion(t, p0=10.0, b=0.4, d=0.1, k=100.0):
    r = b - d
    a = (k - p0) / p0
    return k / (1 + a * math.exp(-r * t))


print(round(poblacion(10), 1))

06 · Exploración

Laboratorio: con techo y sin techo

Mismo r = b − d y mismo P₀ = 10: la teal es exponencial sin techo; la dorada es logística con tu K. Al inicio se tocan; después la dorada se dobla y la teal se escapa. Esa brecha es el precio de ignorar la capacidad.

EXPERIMENTO 18

Capacidad que frena

r = b − d · P₀ = 10 · con y sin K

Los resultados numéricos aparecen debajo.
Neto r = b − d+0,30
Final sin techo200,86
Final con K (T=20)99,13
Brecha101,73

Con r +0,3 la exponencial duplica a la logística: ignorar K cuesta 101,73.

La brecha entre curvas mide el error de suponer ambiente infinito. Con r negativo, ambas caen y la brecha se cierra por abajo.

Preguntas para explorar

  1. Con b = 0,1 y d = 0,4, ¿qué hacen ambas curvas? ¿Hay brecha?
  2. Duplicá K con el mismo r. ¿La logística se acerca a la exponencial?
  3. Si K = 40 con P₀ = 10, ¿la S se nota en T = 20 o ya aterrizó?
Ver respuestas sugeridas
  1. Decaen juntas hacia 0 (r = −0,3): sin nacimientos no hay techo que valga.
  2. Sí: K grande tarda en frenar y la S imita al despegue en el plazo.
  3. Ya aterrizó (≈ 40): con K chico la saturación llega rápido y la S se completa.

07 · Comprensión

Confusiones frecuentes

«r es natalidad»

No: r = b − d es el neto. Alta natalidad con alta mortalidad da r chico y S lenta.

«K es otro parámetro»

K es el destino: moverlo mueve el equilibrio final. Su estimación decide la predicción.

«El continuo cuenta individuos»

Cuenta densidad: 10,5 individuos es promedio, no censo. Con pocos, el entero y el azar mandan.

«Sin techo vale igual»

Solo en P ≪ K y corto plazo: la brecha con la logística crece exponencialmente con T.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: neto que decide

Con b = 0,35 y d = 0,15, ¿cuánto vale r? ¿La población crece o mengua?

b, d = 0.35, 0.15
print("r =", round(b - d, 2), "→", "crece" if b > d else "mengua")
Ver solución

r = +0,2: crece con duplicación ln2/0,2 ≈ 3,47 mientras P ≪ K.

Ejercicio 2: equilibrio con cosecha

Con r = 0,3, K = 100 y cosecha h = 0,1, ¿dónde queda el equilibrio? ¿Y si h = 0,4?

def equilibrio_cosecha(r=0.3, k=100.0, h=0.1):
    return max(0.0, k * (1 - h / r))


print(equilibrio_cosecha(h=0.1))
print(equilibrio_cosecha(h=0.4))
Ver solución

66,7 y 0: con h > r la extracción supera al neto y colapsa. Pescar de más vacía.

Ejercicio 3: brecha con y sin techo

Desde P₀ = 10 con r = 0,3 y K = 100 en T = 15, calculá exponencial y logística. ¿Cuánto cuesta ignorar K?

Ver una posible respuesta
import math


def exp(p0, r, t):
    return p0 * math.exp(r * t)


def log(p0, r, k, t):
    return k / (1 + (k - p0) / p0 * math.exp(-r * t))


e, l = exp(10, 0.3, 15), log(10, 0.3, 100, 15)
print(round(e, 1), round(l, 1), round(e - l, 1))

900,2 frente a 98,9: la brecha es 801,3. Ignorar K multiplica ×9 la predicción.

09 · Síntesis

Ideas para recordar

  • dP/dt = (b − d)·P·(1 − P/K): nacimientos menos muertes con freno en K.
  • Signo de b − d decide: crece (S), mengua (decae), iguala (reposa).
  • Con cosecha h: equilibrio en K·(1 − h/r); si h > r, extinción.
  • En Python: b y d separados, r explícito; exacta con el neto.
  • Sin techo solo vale en P ≪ K: la brecha con la S mide el error.

En el próximo tema la población se moverá: modelos de propagación en espacio y tiempo.