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

The age of a find with 35 % of ¹⁴C left.
Input: 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)
The time of death: the body was 30 °C when found, 28 °C an hour later, the room 20 °C.
Input: 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)
A 500 mg drug every 8 hours – the steady level between doses.
Input: 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)
The monthly repayment of a loan of 1 000 000 CZK for 20 years at 5 %.
Input: 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)
How long a capacitor takes to charge to half the source voltage.
Input: 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)
A damped spring – the displacement at 1 s.
Input: 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])
An epidemic with R₀ = 2.5 – the peak and the final number of infected.
Input: 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)
Predator and prey – the equilibrium, its stability and the period.
Input: 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])