Our compartmental model has two compartments:
For the our variables, let
Consider two scenarios to model:
The cold pill contains:
Both pass through:
\[ \frac{dx}{dt} = -k_1x, \,\,\, x(0)= x_0 \]
\[ \frac{dy}{dt} = k_1x - k_2 y, \,\,\, y(0)= y_0 \]
\[ \begin{align*} \frac{dx}{dt} &= -k_1x, \,\,\, x(0)= x_0 \\ \frac{dy}{dt} &= k_1x - k_2 y, \,\,\, y(0)= y_0 \end{align*} \]
\[ \begin{align*} \frac{dx}{dt} &= -k_1x, \,\,\, x(0)= x_0 \\ \frac{dy}{dt} &= k_1x - k_2 y, \,\,\, y(0)= y_0 \end{align*} \]
\[
\begin{align*}
\frac{dx_d}{dt} &= -k_{1d}x_d, \,\,\, x_d(0)= x_{d0} \\
\frac{dx_a}{dt} &= -k_{1a}x_a, \,\,\, x_a(0)= x_{a0} \\
\frac{dy_d}{dt} &= k_{1d}x_d - k_{2d} y_d, \,\,\, y_d(0)= y_{d0} \\
\frac{dy_a}{dt} &= k_{1a}x_a - k_{2a} y_a, \,\,\, y_a(0)= y_{a0}
\end{align*}
\]
Ch27model1(10,100)
Ch27model1(10,100)
\[ \begin{align*} \frac{dx}{dt} &= -k_1x, \,\,\, x(0)= x_0 \\ & \implies x(t) = x_0 e^{-k_1 t} \\ \frac{dy}{dt} &= k_1x - k_2 y, \, \,\, y(0)= y_0 \\ & \implies y(t) = \frac{k_1 x_0}{k_1-k_2}\left( e^{-k_2 t} - e^{-k_1 t} \right) \end{align*} \]
Ch27model1 <- function(T,n) {
#Chapter2.7 Model I
#Perform Rk4 for decongestant & antihistamine
#T is the time length for [0, T]
#n is the number of time steps
h = T/n #This is the time step size
#System Parameters
t0 <- 0
xd0 <- 1 #initial GI decongestant
xa0 <- 1 #initial GI antihistamine
yd0 <- 0 #initial blood decongestant
ya0 <- 0 #initial blood antihistamine
k1d <- 1.3860 #k1 for GI decongestant
k1a <- 0.6931 #k1 for GI antihistamine
k2d <- 0.1386 #k2 for blood decongestant
k2a <- 0.0231 #k2 for blood antihistamine
#System of ODEs
f1d <- function(x) {-k1d*x}
f1a <- function(x) {-k1a*x}
f2d <- function(x,y) {k1d*x - k2d*y}
f2a <- function(x,y) {k1a*x - k2a*y}
#Initialize time, GI-tract x, and bloodstream y
t <- rep(0, n)
xd <- rep(0, n)
xa <- rep(0, n)
yd <- rep(0, n)
ya <- rep(0, n)
t[1] <- t0
xd[1] <- xd0
xa[1] <- xa0
yd[1] <- yd0
ya[1] <- ya0
#Runge-Kutta Loop: GI-Tract Compartment
for(i in 1:n) {
a1 <- h*f1d(xd[i]) #f1d = slope of xd
a2 <- h*f1a(xa[i]) #f2a = slope of xa
b1 <- h*f1d(xd[i]+0.5*a1) #Half-step predictor
b2 <- h*f1a(xa[i]+0.5*a2) #Half-step predictor
c1 <- h*f1d(xd[i]+0.5*b1) #Half-step predictor
c2 <- h*f1a(xa[i]+0.5*b2) #Half-step predictor
d1 <- h*f1d(xd[i]+c1) #Full-step predictor
d2 <- h*f1a(xa[i]+c2) #Full-step predictor
xd[i+1] <- xd[i]+(1/6)*(a1+2*b1+2*c1+d1)
xa[i+1] <- xa[i]+(1/6)*(a2+2*b2+2*c2+d2)
t[i+1] <- t[i] + h
}
#Runge-Kutta Loop: Bloodstream Compartment
for(i in 1:n) {
a1 <- h*f2d(xd[i],yd[i])
a2 <- h*f2a(xa[i],ya[i])
b1 <- h*f2d(xd[i]+0.5*a1,yd[i]+0.5*a1)
b2 <- h*f2a(xa[i]+0.5*a2,ya[i]+0.5*a2)
c1 <- h*f2d(xd[i]+0.5*b1,yd[i]+0.5*b1)
c2 <- h*f2a(xa[i]+0.5*b2,ya[i]+0.5*b2)
d1 <- h*f2d(xd[i]+c1,yd[i]+c1)
d2 <- h*f2a(xa[i]+c2,ya[i]+c2)
yd[i+1] <- yd[i]+(1/6)*(a1+2*b1+2*c1+d1)
ya[i+1] <- ya[i]+(1/6)*(a2+2*b2+2*c2+d2)
}
#Plot results
plot(t,xd,
main = "Model I: GI-Tract",
xlab = "t (hours)",
ylab = "Amount (mg)",
type="l",col="blue",
xlim=c(0,T),
ylim=c(0,1)
)
lines(t,xa, type="l",col="red")
legend("topright",
legend = c("Decongestant", "Antihistamine"),
col=c("blue","red"),
lty=c(1,1)
)
plot(t,yd,
main = "Model I: Bloodstream",
xlab = "t (hours)",
ylab = "Amount (mg)",
type="l",col="blue",
xlim=c(0,T),
ylim=c(0,1.5)
)
lines(t,ya, type="l",col="red")
legend("topright",
legend = c("Decongestant", "Antihistamine"),
col=c("blue","red"),
lty=c(1,1.5)
)
}
Ch27model1(10,100)
Ch27model1(10,100)
\[ \begin{align*} \frac{dx}{dt} &= I - k_1x, \,\,\, x(0)= 0 \\ \frac{dy}{dt} &= k_1x - k_2 y, \,\,\, y(0)= 0 \end{align*} \]
\[ \begin{align*} \frac{dx_d}{dt} &= I -k_{1d}x_d, \,\,\, x_d(0)= 0 \\ \frac{dx_a}{dt} &= I -k_{1a}x_a, \,\,\, x_a(0)= 0 \\ \frac{dy_d}{dt} &= k_{1d}x_d - k_{2d} y_d, \,\,\, y_d(0)= 0 \\ \frac{dy_a}{dt} &= k_{1a}x_a - k_{2a} y_a, \,\,\, y_a(0)= 0 \end{align*} \]
#System Parameters
k1d <- 1.3860 #k1 for GI decongestant
k1a <- 0.6931 #k1 for GI antihistamine
k2d <- 0.1386 #k2 for blood decongestant
k2a <- 0.0231 #k2 for blood antihistamine
Id <- 1
Ia <- 1
#System of ODEs
f1d <- function(x) {Id - k1d*x}
f1a <- function(x) {Ia - k1a*x}
f2d <- function(x,y) {k1d*x - k2d*y}
f2a <- function(x,y) {k1a*x - k2a*y}
Ch27model2(60,600)
Ch27model2(10,100)
Ch27model2(60,600)
Ch27model2(10,100)
\[ \begin{align*} \frac{dx}{dt} &= I -k_1x, \,\,\, x(0)= x_0 \\ & \implies x(t) = \frac{I}{k_1} \left( 1- e^{-k_1 t}\right) \\ \frac{dy}{dt} &= k_1x - k_2 y, \,\,\, y(0)= y_0 \\ & \implies y(t) = \frac{I}{k_2} \left[ 1 - \frac{1}{k_2-k_1}\left( k_2 e^{-k_1 t} - k_1 e^{-k_2 t} \right) \right] \end{align*} \]
This allows drug to be released slowly and evenly over a period of hours.