Applications of differential equations
The "Applications of differential equations" button on the home screen opens a form with 23 models: radiocarbon dating, decay and half-life, exponential growth, a decay chain, Newton's cooling (also the time of death from two measurements), chemical kinetics of the 0th–2nd order, a drug in the blood (one dose, repeated doses, an infusion), blood alcohol, savings and loans, RC, RL and RLC circuits, a mass on a spring, a fall with air resistance, a draining tank, mixing in a tank, logistic and Gompertz growth, a harvested population, the SIR epidemic, predator and prey, two competing species and a chemostat.
You choose the model, its variant and what you are looking for; the constants (¹⁴C's half-life, the gravitational acceleration, …) are prefilled and can be changed. Every quantity and the result have a unit to choose – the app converts the values (the conversion is a step). The "?" by the model explains where its equation comes from.
The steps start by setting the model up (why this equation), go on solving the equation (separation of variables, an integrating factor, the characteristic equation), substitute the conditions, express the sought quantity and end by substituting the numbers. Systems (SIR, predator and prey, competition, a chemostat) are solved numerically by the Runge–Kutta method, their equilibria and stability exactly. The graph shows the quantities in time with the answer marked, for systems also the phase plane.
Examples
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)](img/models-radiocarbon.png)
![model(radiocarbon; find=t[yr]; T12=5730[yr]; p=35[pct]; input=ratio)](img/models-radiocarbon-1.png)
![model(radiocarbon; find=t[yr]; T12=5730[yr]; p=35[pct]; input=ratio)](img/models-radiocarbon-2.png)
![model(radiocarbon; find=t[yr]; T12=5730[yr]; p=35[pct]; input=ratio)](img/models-radiocarbon-3.png)
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)](img/models-death.png)
![model(cooling; find=t[h]; T0=30[degC]; Ta=20[degC]; t1=1[h]; T1=28[degC]; Tt=37[degC]; k=measured)](img/models-death-1.png)
![model(cooling; find=t[h]; T0=30[degC]; Ta=20[degC]; t1=1[h]; T1=28[degC]; Tt=37[degC]; k=measured)](img/models-death-2.png)
![model(cooling; find=t[h]; T0=30[degC]; Ta=20[degC]; t1=1[h]; T1=28[degC]; Tt=37[degC]; k=measured)](img/models-death-3.png)
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)](img/models-drug.png)
![model(drug; find=steady[mg_l]; D=500[mg]; V=40[l]; T12=6[h]; tau=8[h]; mode=repeated)](img/models-drug-1.png)
![model(drug; find=steady[mg_l]; D=500[mg]; V=40[l]; T12=6[h]; tau=8[h]; mode=repeated)](img/models-drug-2.png)
![model(drug; find=steady[mg_l]; D=500[mg]; V=40[l]; T12=6[h]; tau=8[h]; mode=repeated)](img/models-drug-3.png)
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)](img/models-loan.png)
![model(interest; find=a[CZK_mo]; B0=1000000[CZK]; r=5[pct_yr]; t=20[yr]; B=0[CZK]; kind=loan)](img/models-loan-1.png)
![model(interest; find=a[CZK_mo]; B0=1000000[CZK]; r=5[pct_yr]; t=20[yr]; B=0[CZK]; kind=loan)](img/models-loan-2.png)
![model(interest; find=a[CZK_mo]; B0=1000000[CZK]; r=5[pct_yr]; t=20[yr]; B=0[CZK]; kind=loan)](img/models-loan-3.png)
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)](img/models-rc.png)
![model(rc; find=t[ms]; R=10[kohm]; C=100[uF]; U=12[V]; u=6[V]; mode=charge)](img/models-rc-1.png)
![model(rc; find=t[ms]; R=10[kohm]; C=100[uF]; U=12[V]; u=6[V]; mode=charge)](img/models-rc-2.png)
![model(rc; find=t[ms]; R=10[kohm]; C=100[uF]; U=12[V]; u=6[V]; mode=charge)](img/models-rc-3.png)
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])](img/models-spring.png)
![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])](img/models-spring-1.png)
![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])](img/models-spring-2.png)
![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])](img/models-spring-3.png)
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)](img/models-sir.png)
![model(sir; find=overview[d]; N=10000[pcs]; I0=10[pcs]; R0=2.5; D=7[d]; rates=r0)](img/models-sir-1.png)
![model(sir; find=overview[d]; N=10000[pcs]; I0=10[pcs]; R0=2.5; D=7[d]; rates=r0)](img/models-sir-2.png)
![model(sir; find=overview[d]; N=10000[pcs]; I0=10[pcs]; R0=2.5; D=7[d]; rates=r0)](img/models-sir-3.png)
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])](img/models-predator.png)
![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])](img/models-predator-1.png)
![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])](img/models-predator-2.png)
![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])](img/models-predator-3.png)