Aplicaciones de ecuaciones diferenciales

El botón «Aplicaciones de ecuaciones diferenciales» de la pantalla inicial abre un formulario con 23 modelos: radiocarbono, desintegración y periodo, crecimiento exponencial, cadena de desintegración, enfriamiento de Newton (también la hora de la muerte con dos mediciones), cinética química de orden 0–2, fármaco en la sangre, alcoholemia, ahorro y préstamo, circuitos RC, RL y RLC, resorte, caída con resistencia del aire, vaciado de un depósito, mezcla, crecimiento logístico y de Gompertz, población con captura, epidemia SIR, depredador y presa, competencia de dos especies y quimiostato.

Eliges el modelo, la variante y lo que buscas; las constantes vienen rellenadas y se pueden cambiar. Cada magnitud y el resultado tienen su unidad a elegir: la aplicación convierte los valores (la conversión es un paso). El «?» junto al modelo explica de dónde sale su ecuación.

Los pasos plantean el modelo, resuelven la ecuación (separación de variables, factor integrante, ecuación característica), aplican las condiciones, despejan la magnitud buscada y sustituyen los números. Los sistemas se resuelven numéricamente con Runge–Kutta; sus equilibrios y su estabilidad, exactamente. El gráfico muestra las magnitudes en el tiempo y, en los sistemas, el plano de fases.

Ejemplos

Edad de un hallazgo con un 35 % de ¹⁴C restante.
Enunciado: model(radiocarbon; find=t[yr]; T12=5730[yr]; p=35[pct]; input=ratio)
model(radiocarbon; find=t[yr]; T12=5730[yr]; p=35[pct]; input=ratio)
model(radiocarbon; find=t[yr]; T12=5730[yr]; p=35[pct]; input=ratio)model(radiocarbon; find=t[yr]; T12=5730[yr]; p=35[pct]; input=ratio)model(radiocarbon; find=t[yr]; T12=5730[yr]; p=35[pct]; input=ratio)
Hora de la muerte: 30 °C al encontrarlo, 28 °C una hora después, habitación a 20 °C.
Enunciado: model(cooling; find=t[h]; T0=30[degC]; Ta=20[degC]; t1=1[h]; T1=28[degC]; Tt=37[degC]; k=measured)
model(cooling; find=t[h]; T0=30[degC]; Ta=20[degC]; t1=1[h]; T1=28[degC]; Tt=37[degC]; k=measured)
model(cooling; find=t[h]; T0=30[degC]; Ta=20[degC]; t1=1[h]; T1=28[degC]; Tt=37[degC]; k=measured)model(cooling; find=t[h]; T0=30[degC]; Ta=20[degC]; t1=1[h]; T1=28[degC]; Tt=37[degC]; k=measured)model(cooling; find=t[h]; T0=30[degC]; Ta=20[degC]; t1=1[h]; T1=28[degC]; Tt=37[degC]; k=measured)
500 mg cada 8 horas: el nivel estacionario.
Enunciado: model(drug; find=steady[mg_l]; D=500[mg]; V=40[l]; T12=6[h]; tau=8[h]; mode=repeated)
model(drug; find=steady[mg_l]; D=500[mg]; V=40[l]; T12=6[h]; tau=8[h]; mode=repeated)
model(drug; find=steady[mg_l]; D=500[mg]; V=40[l]; T12=6[h]; tau=8[h]; mode=repeated)model(drug; find=steady[mg_l]; D=500[mg]; V=40[l]; T12=6[h]; tau=8[h]; mode=repeated)model(drug; find=steady[mg_l]; D=500[mg]; V=40[l]; T12=6[h]; tau=8[h]; mode=repeated)
Cuota mensual de un préstamo de 1 000 000 CZK a 20 años al 5 %.
Enunciado: model(interest; find=a[CZK_mo]; B0=1000000[CZK]; r=5[pct_yr]; t=20[yr]; B=0[CZK]; kind=loan)
model(interest; find=a[CZK_mo]; B0=1000000[CZK]; r=5[pct_yr]; t=20[yr]; B=0[CZK]; kind=loan)
model(interest; find=a[CZK_mo]; B0=1000000[CZK]; r=5[pct_yr]; t=20[yr]; B=0[CZK]; kind=loan)model(interest; find=a[CZK_mo]; B0=1000000[CZK]; r=5[pct_yr]; t=20[yr]; B=0[CZK]; kind=loan)model(interest; find=a[CZK_mo]; B0=1000000[CZK]; r=5[pct_yr]; t=20[yr]; B=0[CZK]; kind=loan)
Cuánto tarda un condensador en cargarse a la mitad de la tensión.
Enunciado: model(rc; find=t[ms]; R=10[kohm]; C=100[uF]; U=12[V]; u=6[V]; mode=charge)
model(rc; find=t[ms]; R=10[kohm]; C=100[uF]; U=12[V]; u=6[V]; mode=charge)
model(rc; find=t[ms]; R=10[kohm]; C=100[uF]; U=12[V]; u=6[V]; mode=charge)model(rc; find=t[ms]; R=10[kohm]; C=100[uF]; U=12[V]; u=6[V]; mode=charge)model(rc; find=t[ms]; R=10[kohm]; C=100[uF]; U=12[V]; u=6[V]; mode=charge)
Resorte amortiguado: elongación en 1 s.
Enunciado: model(spring; find=x[cm]; m=0.5[kg]; k=20[N_m]; b=1[kg_s]; x0=5[cm]; v0=0[m_s]; t=1[s])
model(spring; find=x[cm]; m=0.5[kg]; k=20[N_m]; b=1[kg_s]; x0=5[cm]; v0=0[m_s]; t=1[s])
model(spring; find=x[cm]; m=0.5[kg]; k=20[N_m]; b=1[kg_s]; x0=5[cm]; v0=0[m_s]; t=1[s])model(spring; find=x[cm]; m=0.5[kg]; k=20[N_m]; b=1[kg_s]; x0=5[cm]; v0=0[m_s]; t=1[s])model(spring; find=x[cm]; m=0.5[kg]; k=20[N_m]; b=1[kg_s]; x0=5[cm]; v0=0[m_s]; t=1[s])
Epidemia con R₀ = 2,5: pico y total de infectados.
Enunciado: model(sir; find=overview[d]; N=10000[pcs]; I0=10[pcs]; R0=2.5; D=7[d]; rates=r0)
model(sir; find=overview[d]; N=10000[pcs]; I0=10[pcs]; R0=2.5; D=7[d]; rates=r0)
model(sir; find=overview[d]; N=10000[pcs]; I0=10[pcs]; R0=2.5; D=7[d]; rates=r0)model(sir; find=overview[d]; N=10000[pcs]; I0=10[pcs]; R0=2.5; D=7[d]; rates=r0)model(sir; find=overview[d]; N=10000[pcs]; I0=10[pcs]; R0=2.5; D=7[d]; rates=r0)
Depredador y presa: equilibrio, estabilidad y periodo.
Enunciado: model(predator; find=overview[mo]; a=0.5[per_mo]; b=0.01[per_pcs_mo]; c=0.4[per_mo]; d=0.005[per_pcs_mo]; x0=100[pcs]; y0=20[pcs])
model(predator; find=overview[mo]; a=0.5[per_mo]; b=0.01[per_pcs_mo]; c=0.4[per_mo]; d=0.005[per_pcs_mo]; x0=100[pcs]; y0=20[pcs])
model(predator; find=overview[mo]; a=0.5[per_mo]; b=0.01[per_pcs_mo]; c=0.4[per_mo]; d=0.005[per_pcs_mo]; x0=100[pcs]; y0=20[pcs])model(predator; find=overview[mo]; a=0.5[per_mo]; b=0.01[per_pcs_mo]; c=0.4[per_mo]; d=0.005[per_pcs_mo]; x0=100[pcs]; y0=20[pcs])model(predator; find=overview[mo]; a=0.5[per_mo]; b=0.01[per_pcs_mo]; c=0.4[per_mo]; d=0.005[per_pcs_mo]; x0=100[pcs]; y0=20[pcs])