Modelos Continuos · Tema 16

Crecimiento logístico

Límites que frenan la expansión: despegue, inflexión y techo K en una curva S.

01 · Punto de partida

Crecer hasta chocar con el techo

La colonia despega exponencial… hasta que la comida escasea, el espacio se llena o los residuos molestan. El crecimiento se frena solo al acercarse a la capacidad K: nace la curva S del logístico dP/dt = r·P·(1 − P/K).

Es el primer modelo con dos equilibrios (0 y K) y con historia en dos actos: despegue y saturación, separados por la inflexión en K/2.

  • ¿Cuál es el techo K del ambiente?
  • ¿Dónde está la inflexión (máxima velocidad)?
  • ¿Cuánto tarda en llenar la mitad y el 90 %?
  • ¿Qué pasa si arranca arriba de K?

02 · Definición

¿Qué es el crecimiento logístico?

Exponencial con freno proporcional al llenado:

r

Impulso r

Velocidad del despegue cuando P ≪ K: manda el arranque. Ejemplo: r = 0,5/min.

K

Techo K

Capacidad del ambiente: donde la tasa muere. Ejemplo: K = 100 individuos.

½

Inflexión K/2

Máxima tasa r·K/4: la curva pasa de acelerar a frenar. Bisagra de la S.

Con A = (K − P₀)/P₀. Si P₀ > K, la curva baja hacia K: el techo atrae desde arriba también.

Logístico r = 0,5, K = 100, P₀ = 10.
tP(t)Tasa
010 (despegue)4,5 (crece).
Inflexión ≈ 4,450 (bisagra)12,5 (máxima).
10≈ 94 (saturando)≈ 2,8 (muere).
20≈ 100 (techo)≈ 0 (reposo).

03 · Anatomía

Dos equilibrios y una bisagra

El logístico tiene personalidad doble:

P = 0 (repulsor)
Vacío inestable: cualquier semilla despega. Equilibrio que repele.
P = K (atractor)
Techo estable: desde abajo sube, desde arriba baja. Equilibrio que atrae.
Inflexión K/2
Tiempo t* = ln((K − P₀)/P₀)/r: la tasa toca su máximo r·K/4.
Per cápita r(1 − P/K)
Recta que cae de r a 0: cada individuo aporta menos al llenarse.

Exponencial

Un equilibrio en 0

Despega y no vuelve: sin techo, la curva se va. Válido solo al inicio.

Logístico

Dos equilibrios: 0 y K

Despega como exponencial y aterriza como tanque: S completa con principio y fin.

04 · Logístico en el curso

El techo reaparece en todas partes

Cada saturación del curso es un logístico disfrazado:

Despegue r→Freno (1 − P/K)→Techo K
  1. 1
    Cultivo.

    Comida finita: K es el plato. Clásico de laboratorio.

  2. 2
    Población (Tema 18).

    Nacimientos menos muertes con capacidad: logística con demografía.

  3. 3
    Adopción.

    Innovación que contagia hasta saturar el mercado K.

  4. 4
    Tumor con límite.

    Crece y se frena por nutrientes: S con K terapéutico.

  5. 5
    SIR acumulado.

    Infectados totales en S: el techo es la población N.

05 · Representación en Python

Exacta, tasa e inflexión

En Python, el logístico es una exacta cerrada más una tasa con freno. La inflexión se calcula, no se adivina.

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Subí K a 200 y observá que la S se estira.

import math


def logistica(t, p0=10.0, r=0.5, k=100.0):
    a = (k - p0) / p0
    return k / (1 + a * math.exp(-r * t))


def tasa(p, r=0.5, k=100.0):
    return r * p * (1 - p / k)


for t in [0, 4.4, 10, 20]:
    print(t, round(logistica(t), 1))

10 → 50 → 94 → 100: despegue, bisagra, techo.

Inflexión exacta

El tiempo de la bisagra sale de igualar P(t) = K/2:

import math


def inflexion(p0=10.0, r=0.5, k=100.0):
    return math.log((k - p0) / p0) / r


print(round(inflexion(), 2), "tasa máx:", round(0.5 * 100 / 4, 1))

06 · Exploración

Laboratorio: la S con su bisagra

Logístico con tu r, tu K y tu P₀. La dorada es P(t); la punteada gris es K y la blanca es K/2 con su tiempo de inflexión. La teal es la tasa (escala propia): nace chica, toca el máximo en la bisagra y muere en el techo.

EXPERIMENTO 16

Despegue y saturación

dP/dt = r · P · (1 − P/K)

Los resultados numéricos aparecen debajo.
Inflexión t*4,39
Tasa máxima12,50
P final (T=20)99,96
% de K100,0 %

Con r 0,5 y K 100 la bisagra cae en t = 4,39.

La tasa teal es campana: sube con el despegue, culmina en K/2 y cae con la saturación. Su cero final es el techo.

Preguntas para explorar

  1. Con P₀ = 2, ¿la inflexión llega antes o después que con P₀ = 10? ¿Por qué?
  2. Duplicá K con el mismo r. ¿La tasa máxima se duplica o se cuadruplica?
  3. Si P₀ = 150 con K = 100, ¿la curva sube o baja? ¿Pasa por K/2?
Ver respuestas sugeridas
  1. Después (t* ≈ 7,8): arrancar más abajo alarga el despegue. La fórmula lo dice: ln((K − P₀)/P₀)/r.
  2. Se duplica (r·K/4 lineal en K). El tiempo de inflexión casi no se mueve si P₀ ≪ K.
  3. Baja hacia K sin inflexión interior: el techo atrae desde arriba en caída monótona.

07 · Comprensión

Confusiones frecuentes

«K es un parámetro más»

K es el destino del sistema: moverlo mueve el equilibrio. No es ajuste fino, es capacidad física.

«La inflexión está en la mitad del tiempo»

Está en la mitad del nivel (K/2), no del horizonte: su tiempo t* depende de r y P₀.

«Exponencial y logístico temprano se distinguen fácil»

No: con P ≪ K coinciden. Solo datos tardíos (freno visible) los separan.

«Pasado K se rompe todo»

No se rompe: la EDO sigue valiendo y baja hacia K. El modelo contempla arrancar excedido.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: bisagra a mano

Con P₀ = 10, r = 0,5 y K = 100, calculá t* y la tasa máxima. Verificá que P(t*) = 50.

import math


def t_estrella(p0=10.0, r=0.5, k=100.0):
    return math.log((k - p0) / p0) / r


print(round(t_estrella(), 2))
Ver solución

t* ≈ 4,39 con tasa máxima 12,5/min: la S se dobla justo en 50.

Ejercicio 2: tasa que nace y muere

Evaluá dP/dt en P = 5, 50 y 95 con r = 0,5 y K = 100. ¿Dónde es máxima?

def tasa(p, r=0.5, k=100.0):
    return r * p * (1 - p / k)


for p in [5, 50, 95]:
    print(p, round(tasa(p), 2))
Ver solución

2,38 · 12,5 · 2,38: simétrica alrededor de 50. Nace y muere igual, culmina en la bisagra.

Ejercicio 3: ¿cuándo llega al 90 %?

Hallá el t donde P = 0,9·K con P₀ = 10, r = 0,5, K = 100. Resolvelo despejando la exacta.

Ver una posible respuesta
import math


def tiempo_nivel(fraccion, p0=10.0, r=0.5, k=100.0):
    a = (k - p0) / p0
    objetivo = fraccion * k
    return math.log(a / (k / objetivo - 1)) / r


print(round(tiempo_nivel(0.9), 2))

En t ≈ 8,79: el doble que la inflexión. La segunda mitad de la S tarda tanto como la primera.

09 · Síntesis

Ideas para recordar

  • dP/dt = r·P·(1 − P/K): despegue exponencial + freno lineal hacia K.
  • Equilibrios 0 (repele) y K (atrae); inflexión en K/2 con tasa máxima r·K/4.
  • Per cápita r(1 − P/K): recta que cae de r a 0; revela el freno.
  • En Python: exacta K/(1 + A·e^(−rt)), t* = ln((K − P₀)/P₀)/r.
  • Temprano coincide con exponencial: el freno solo se ve con datos tardíos.

En el próximo tema veremos el espejo: los modelos de decaimiento que se agotan.