# Guía de Estudio: Semana 10 – Funciones y Análisis de Ecuaciones Diferenciales **Materia:** Dinámica Industrial – Dinámica de Sistemas **Cátedra:** Ing. Nahuel Romera **Lecturas Obligatorias:** Sterman, John D. *Business Dynamics*, Capítulos 7 y 8 (Págs. 231 a 262); Aracil, Javier. *Dinámica de Sistemas*, Capítulos 3 y 4. --- ## 1. La Hipótesis Dinámica Matemática y el Sistema de EDOs Un Diagrama de Forrester no es una mera representación gráfica; es la formulación visual de un **sistema de Ecuaciones Diferenciales Ordinarias (EDO) de primer orden acopladas**: $$\frac{d\vec{x}(t)}{dt} = \vec{f}(\vec{x}(t), \vec{p}, t)$$ Para cada variable de nivel $x_i(t)$: $$\frac{dx_i(t)}{dt} = \sum_{j} \text{Inflow}_{ij}(t) - \sum_{k} \text{Outflow}_{ik}(t)$$ En forma integral: $$x_i(t) = x_i(t_0) + \int_{t_0}^{t} \left[ \sum_{j} \text{Inflow}_{ij}(\tau) - \sum_{k} \text{Outflow}_{ik}(\tau) \right] d\tau$$ ### Características del Sistema: 1. **Orden del Sistema:** Está determinado por el número de variables de nivel **independientes**. Un modelo con 3 stocks es un sistema de 3.º orden, capaz de manifestar comportamientos oscilatorios o no lineales complejos. 2. **Endogeneidad de los Flujos:** Las funciones de flujo no dependen del tiempo de forma abstracta, sino del estado actual de los stocks y de las variables auxiliares: $$\text{Rate}(t) = g(\vec{x}(t), \vec{p})$$ --- ## 2. Métodos de Integración Numérica y Estabilidad de $\Delta t$ En la práctica ingenieril, las EDOs no lineales no admiten solución analítica cerrada; deben resolverse mediante **integración numérica**. ### 2.1. Método de Euler (Primer Orden Explícito) Es el algoritmo estándar por su sencillez computacional: $$x(t + \Delta t) = x(t) + \Delta t \cdot \left[ \text{Inflow}(t) - \text{Outflow}(t) \right]$$ * **Error de Truncamiento Local:** $O(\Delta t^2)$. * **Error Global Acumulado:** $O(\Delta t)$. ### 2.2. Métodos de Runge-Kutta (RK4) Evalúa cuatro pendientes intermedias ponderadas a lo largo del intervalo $[t, t + \Delta t]$: $$k_1 = f(t, x)$$ $$k_2 = f\left(t + \frac{\Delta t}{2}, x + \frac{\Delta t}{2} k_1\right)$$ $$k_3 = f\left(t + \frac{\Delta t}{2}, x + \frac{\Delta t}{2} k_2\right)$$ $$k_4 = f(t + \Delta t, x + \Delta t \cdot k_3)$$ $$x(t + \Delta t) = x(t) + \frac{\Delta t}{6} (k_1 + 2k_2 + 2k_3 + k_4)$$ * **Error Global:** $O(\Delta t^4)$, lo que permite pasos mayores con alta fidelidad. ### 2.3. Criterio de Selección y Estabilidad de $\Delta t$ > [!CAUTION] > **Advertencia de Romera (`26C1-DI-Tradicional-20260520_183919.srt`):** > *"Para un delta T grande, podés tener un error gigantesco y una caída brutal que en la realidad no existe... Tienen que tener cuidado con la aproximación numérica porque una oscilación espuria del método de Euler te hace tomar decisiones desastrosas."* * **Regla de Oro de Sterman:** $$\Delta t \le \frac{1}{4} \tau_{\min} \quad \text{o al menos} \quad \Delta t \le \frac{1}{2} \tau_{\min}$$ donde $\tau_{\min}$ es la **constante de tiempo más rápida** del sistema (por ejemplo, el tiempo de ajuste o retraso más breve). * **Prueba de Halving del Paso:** Si al reducir $\Delta t$ a la mitad ($\Delta t / 2$) las trayectorias de los stocks cambian significativamente o desaparecen oscilaciones, la simulación original sufría de **inestabilidad numérica espuria**. --- ## 3. Funciones Suaves (*Soft Functions / Table Functions / Lookups*) Los modelos industriales lineales fallan porque las relaciones reales saturan, se agotan o encuentran límites físicos. Para modelar no linealidades sin perder rigor matemático, se utilizan las **Funciones Suaves o Tablas de Búsqueda (*Lookups*)**. ### Protocolo de Construcción de una Soft Function: 1. **Normalización de la Entrada:** Expresar la variable independiente como un cociente adimensional respecto a un valor nominal o deseado: $$\text{Ratio} = \frac{x}{x^*}$$ 2. **Punto Ancla Normal:** Cuando el sistema opera en condiciones normales ($\text{Ratio} = 1$), el multiplicador resultante DEBE ser neutro: $$f(1.0) = 1.0$$ 3. **Comportamiento Asintótico en Extremos:** * ¿Qué ocurre si la entrada tiende a cero ($x \to 0$)? * ¿Qué ocurre si la entrada tiende a infinito ($x \to \infty$)? (Límite de saturación física). ```mermaid xychart-beta title "Efecto No Lineal del Hacinamiento en la Tasa de Mortalidad" x-axis ["0.0", "0.5", "1.0 (Normal)", "1.5", "2.0", "3.0"] y-axis "Multiplicador de Mortalidad" 0 --> 5 line [0.8, 0.9, 1.0, 1.4, 2.2, 4.5] ``` ### Funciones de Prueba Operativas de Sterman: * **Escalón (`STEP(altura, t_step)`):** Modela una perturbación exógena súbita y permanente (e.g. salto de demanda). * **Pulso (`PULSE(amplitud, t_inicio, duracion)`):** Modela un shock temporal que luego cesa (e.g. campaña promocional de un mes). * **Rampa (`RAMP(pendiente, t_inicio, t_fin)`):** Modela un crecimiento o declive gradual sostenido. --- ## 4. Caso de Estudio: Agricultura y Colapso Maya (GUIA03) * **Enunciado de Cátedra:** Población inicial de 100.000 habitantes que habitan en una superficie de 5.000 $\text{km}^2$ cubierta originalmente por selva. La población explota la selva para agricultura; sin embargo, la tala excesiva agota la fertilidad del suelo, provocando erosión irreversible, caída del rendimiento agrícola, hambruna y colapso demográfico. * **Estructura Matemática:** 1. $\frac{d(\text{Población})}{dt} = \text{Nacimientos} - \text{Muertes} - \text{Emigración}$. 2. $\text{Muertes} = \text{Población} \times \text{Mortalidad\_Base} \times f(\text{Disponibilidad\_Alimento})$. 3. $\frac{d(\text{Selva})}{dt} = -\text{Tasa\_Desmonte} + \text{Regeneración\_Natural}$. 4. $\text{Rendimiento\_Agrícola} = \text{Rendimiento\_Máximo} \times g(\text{Fertilidad\_Suelo})$. ```mermaid flowchart TD Pob[Población] -->|+ Demanda de comida| Desmonte[Tasa de Desmonte] Desmonte -->|- Reduce selva| Selva[Selva Virgen] Selva -->|+ Permite rotación y descanso| Fertilidad[Fertilidad del Suelo] Fertilidad -->|+ Alimento por hectárea| Alimento[Producción de Alimentos] Alimento -->|- Mitiga hambre| Muertes[Tasa de Mortalidad] Muertes -->|- Reduce población| Pob ``` --- ## 5. Implementación Científica en Python (`SciPy solve_ivp`) ```python import numpy as np from scipy.integrate import solve_ivp import matplotlib.pyplot as plt def modelo_poblacion_recursos(t, state, params): pob, selva, fertilidad = state k_nac, mort_base, tasa_cons = params # Normalizaciones alim_per_capita = (fertilidad * (5000 - selva)) / max(1.0, pob) mult_mortalidad = np.interp(alim_per_capita, [0, 0.5, 1.0, 2.0], [5.0, 2.0, 1.0, 0.8]) nacimientos = pob * k_nac muertes = pob * mort_base * mult_mortalidad desmonte = max(0, min(selva, pob * 0.02)) if alim_per_capita < 1.0 else 0 regeneracion = selva * 0.01 * (1 - selva / 5000) d_pob = nacimientos - muertes d_selva = regeneracion - desmonte d_fertilidad = -0.05 * desmonte + 0.02 * (selva / 5000) return [d_pob, d_selva, d_fertilidad] # Parámetros y condición inicial params = [0.03, 0.015, 1.0] # k_nac, mort_base, tasa_cons y0 = [100000, 4800, 1.0] sol = solve_ivp(modelo_poblacion_recursos, [0, 100], y0, args=(params,), method='RK45', max_step=0.5) print(f"Simulación completa. Estado en t=100: Población = {sol.y[0][-1]:.0f}") ``` --- ## 6. Auditoría de IA para la Semana 10 Al evaluar ecuaciones generadas por IA: 1. **Trampa Dimensional en Lookups:** La IA suele introducir funciones tabla donde la entrada tiene unidades de $[kg]$ y la salida suma directamente a una tasa sin multiplicar por unidades de tiempo. *Filtro:* Toda función tabla de efecto debe generar un multiplicador **adimensional** que pondere a la tasa base. 2. **Paso de Integración Alucinado:** La IA propone simular con `dt = 1` un proceso que tiene una válvula con tiempo de vaciado de 0.2 meses. *Filtro:* Exigir $\Delta t \le 0.05$.