Aplicações de equações diferenciais

O botão «Aplicações de equações diferenciais» na tela inicial abre um formulário com 23 modelos: radiocarbono, decaimento e meia-vida, crescimento exponencial, cadeia de decaimento, resfriamento de Newton (também a hora da morte a partir de duas medições), cinética química de ordem 0–2, medicamento no sangue, álcool no sangue, poupança e empréstimo, circuitos RC, RL e RLC, mola, queda com resistência do ar, esvaziamento de um tanque, mistura, crescimento logístico e de Gompertz, população com captura, epidemia SIR, predador e presa, competição de duas espécies e quimiostato.

Escolhe o modelo, a variante e o que procura; as constantes vêm preenchidas e podem ser alteradas. Cada grandeza e o resultado têm a unidade à escolha: a aplicação converte os valores (a conversão é um passo). O «?» junto ao modelo explica de onde vem a sua equação.

Os passos montam o modelo, resolvem a equação (separação de variáveis, fator integrante, equação característica), aplicam as condições, isolam a grandeza procurada e substituem os números. Os sistemas resolvem-se numericamente por Runge–Kutta; os equilíbrios e a estabilidade, exatamente. O gráfico mostra as grandezas no tempo e, nos sistemas, o plano de fase.

Exemplos

Idade de um achado com 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 da morte: 30 °C ao ser encontrado, 28 °C uma hora depois, sala 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 a cada 8 horas: o nível estacionário.
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)
Prestação mensal de um empréstimo de 1 000 000 CZK por 20 anos a 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)
Quanto tempo um capacitor leva a carregar até metade da tensão.
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)
Mola amortecida: deslocamento em 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 com R₀ = 2,5: pico e 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)
Predador e presa: equilíbrio, estabilidade e período.
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])